Merge remote-tracking branch 'origin/cmake-master-dev' into master

* origin/cmake-master-dev:
  Upgrade cmake to 3.10.2
  Update cmake (ab/4111459)
  Add cmake 3.8.2 for tests
  Update prebuilts to CMake 3.6.0-rc2 (go/ab/3043163).

Bug: 149853706
Change-Id: I570636a6ae3ca935925ac36aeef6a2b3dfcf0c82
diff --git a/bin/ccmake b/bin/ccmake
index c2eb9c3..14ff907 100755
--- a/bin/ccmake
+++ b/bin/ccmake
Binary files differ
diff --git a/bin/cmake b/bin/cmake
index 19c09c7..34b6868 100755
--- a/bin/cmake
+++ b/bin/cmake
Binary files differ
diff --git a/bin/cmakexbuild b/bin/cmakexbuild
index 744bd67..3148880 100755
--- a/bin/cmakexbuild
+++ b/bin/cmakexbuild
Binary files differ
diff --git a/bin/cpack b/bin/cpack
index 73c854a..2e28b67 100755
--- a/bin/cpack
+++ b/bin/cpack
Binary files differ
diff --git a/bin/ctest b/bin/ctest
index 11d35e2..7931453 100755
--- a/bin/ctest
+++ b/bin/ctest
Binary files differ
diff --git a/bin/ninja b/bin/ninja
index 0072d5e..4914519 100755
--- a/bin/ninja
+++ b/bin/ninja
Binary files differ
diff --git a/doc/cmake-3.10/Copyright.txt b/doc/cmake-3.10/Copyright.txt
new file mode 100644
index 0000000..3c92a81
--- /dev/null
+++ b/doc/cmake-3.10/Copyright.txt
@@ -0,0 +1,125 @@
+CMake - Cross Platform Makefile Generator
+Copyright 2000-2017 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 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
+* Kelly Thompson <kgt@lanl.gov>
+* Konstantin Podsvirov <konstantin@podsvirov.pro>
+* Mario Bensi <mbensi@ipsquad.net>
+* Mathieu Malaterre <mathieu.malaterre@gmail.com>
+* Matthaeus G. Chajdas
+* Matthias Kretz <kretz@kde.org>
+* Matthias Maennich <matthias@maennich.net>
+* 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>
+* 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>
+* 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.6/cmcompress/Copyright.txt b/doc/cmake-3.10/cmcompress/Copyright.txt
similarity index 100%
rename from doc/cmake-3.6/cmcompress/Copyright.txt
rename to doc/cmake-3.10/cmcompress/Copyright.txt
diff --git a/doc/cmake-3.10/cmcurl/COPYING b/doc/cmake-3.10/cmcurl/COPYING
new file mode 100644
index 0000000..1e45a5e
--- /dev/null
+++ b/doc/cmake-3.10/cmcurl/COPYING
@@ -0,0 +1,22 @@
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright (c) 1996 - 2017, 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.6/cmlibarchive/COPYING b/doc/cmake-3.10/cmlibarchive/COPYING
similarity index 100%
rename from doc/cmake-3.6/cmlibarchive/COPYING
rename to doc/cmake-3.10/cmlibarchive/COPYING
diff --git a/doc/cmake-3.6/cmliblzma/COPYING b/doc/cmake-3.10/cmliblzma/COPYING
similarity index 100%
rename from doc/cmake-3.6/cmliblzma/COPYING
rename to doc/cmake-3.10/cmliblzma/COPYING
diff --git a/doc/cmake-3.10/cmlibrhash/COPYING b/doc/cmake-3.10/cmlibrhash/COPYING
new file mode 100644
index 0000000..bf65ee1
--- /dev/null
+++ b/doc/cmake-3.10/cmlibrhash/COPYING
@@ -0,0 +1,15 @@
+
+                                RHash License
+
+Copyright (c) 2005-2014 Aleksey Kravchenko <rhash.admin@gmail.com>
+
+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.
+
+The Software  is distributed in the hope that it will be useful,  but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE.  Use  this  program  at  your  own  risk!
diff --git a/doc/cmake-3.10/cmlibrhash/README b/doc/cmake-3.10/cmlibrhash/README
new file mode 100644
index 0000000..4ea492f
--- /dev/null
+++ b/doc/cmake-3.10/cmlibrhash/README
@@ -0,0 +1,7 @@
+                       === Notes on RHash License ===
+
+The RHash program and LibRHash library are distributed under  RHash License,
+see the COPYING file for details.  In particular,  the program,  the library
+and  source code  can be  used  free of charge  under  the  MIT,  BSD,  GPL,
+commercial or freeware license without additional restrictions.  In the case
+the OSI-approved license is required the  MIT license should be used.
diff --git a/doc/cmake-3.10/cmlibuv/LICENSE b/doc/cmake-3.10/cmlibuv/LICENSE
new file mode 100644
index 0000000..41ba44c
--- /dev/null
+++ b/doc/cmake-3.10/cmlibuv/LICENSE
@@ -0,0 +1,70 @@
+libuv is licensed for use as follows:
+
+====
+Copyright (c) 2015-present libuv project contributors.
+
+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 license applies to parts of libuv originating from the
+https://github.com/joyent/libuv repository:
+
+====
+
+Copyright Joyent, Inc. and other Node contributors. All rights reserved.
+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 license applies to all parts of libuv that are not externally
+maintained libraries.
+
+The externally maintained libraries used by libuv are:
+
+  - tree.h (from FreeBSD), copyright Niels Provos. Two clause BSD license.
+
+  - inet_pton and inet_ntop implementations, contained in src/inet.c, are
+    copyright the Internet Systems Consortium, Inc., and licensed under the ISC
+    license.
+
+  - stdint-msvc2008.h (from msinttypes), copyright Alexander Chemeris. Three
+    clause BSD license.
+
+  - pthread-fixes.h, pthread-fixes.c, copyright Google Inc. and Sony Mobile
+    Communications AB. Three clause BSD license.
+
+  - android-ifaddrs.h, android-ifaddrs.c, copyright Berkeley Software Design
+    Inc, Kenneth MacKay and Emergya (Cloud4all, FP7/2007-2013, grant agreement
+    n° 289016). Three clause BSD license.
diff --git a/doc/cmake-3.10/cmsys/Copyright.txt b/doc/cmake-3.10/cmsys/Copyright.txt
new file mode 100644
index 0000000..33d7fb4
--- /dev/null
+++ b/doc/cmake-3.10/cmsys/Copyright.txt
@@ -0,0 +1,38 @@
+KWSys - Kitware System Library
+Copyright 2000-2016 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:
+
+* Insight Software Consortium <insightsoftwareconsortium.org>
+
+See version control history for details of individual contributions.
diff --git a/doc/cmake-3.6/cmzlib/Copyright.txt b/doc/cmake-3.10/cmzlib/Copyright.txt
similarity index 100%
rename from doc/cmake-3.6/cmzlib/Copyright.txt
rename to doc/cmake-3.10/cmzlib/Copyright.txt
diff --git a/doc/cmake-3.6/Copyright.txt b/doc/cmake-3.6/Copyright.txt
deleted file mode 100644
index f99998f..0000000
--- a/doc/cmake-3.6/Copyright.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-CMake - Cross Platform Makefile Generator
-Copyright 2000-2016 Kitware, Inc.
-Copyright 2000-2011 Insight Software Consortium
-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 names of Kitware, Inc., the Insight Software Consortium,
-  nor the names of their 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 above copyright and license notice applies to distributions of
-CMake in source and binary form.  Some source files contain additional
-notices of original copyright by their contributors; see each source
-for details.  Third-party software packages supplied with CMake under
-compatible licenses provide their own copyright notices documented in
-corresponding subdirectories.
-
-------------------------------------------------------------------------------
-
-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.6/cmcurl/COPYING b/doc/cmake-3.6/cmcurl/COPYING
deleted file mode 100644
index 6b5d59f..0000000
--- a/doc/cmake-3.6/cmcurl/COPYING
+++ /dev/null
@@ -1,21 +0,0 @@
-COPYRIGHT AND PERMISSION NOTICE
-
-Copyright (c) 1996 - 2015, Daniel Stenberg, <daniel@haxx.se>.
-
-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.6/cmsys/Copyright.txt b/doc/cmake-3.6/cmsys/Copyright.txt
deleted file mode 100644
index 1549a7d..0000000
--- a/doc/cmake-3.6/cmsys/Copyright.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-KWSys - Kitware System Library
-Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
-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 names of Kitware, Inc., the Insight Software Consortium,
-  nor the names of their 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.
diff --git a/share/aclocal/cmake.m4 b/share/aclocal/cmake.m4
index a374a3b..7beff41 100644
--- a/share/aclocal/cmake.m4
+++ b/share/aclocal/cmake.m4
@@ -1,14 +1,5 @@
-dnl ============================================================================
-dnl   CMake - Cross Platform Makefile Generator
-dnl   Copyright 2011 Matthias Kretz, kretz@kde.org
-dnl
-dnl   Distributed under the OSI-approved BSD License (the "License");
-dnl   see accompanying file Copyright.txt for details.
-dnl
-dnl   This software is distributed WITHOUT ANY WARRANTY; without even the
-dnl   implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-dnl   See the License for more information.
-dnl ============================================================================
+dnl Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+dnl file Copyright.txt or https://cmake.org/licensing for details.
 
 AC_DEFUN([CMAKE_FIND_BINARY],
 [AC_ARG_VAR([CMAKE_BINARY], [path to the cmake binary])dnl
@@ -33,10 +24,10 @@
 
 failed=false
 AC_MSG_CHECKING([for $1])
-if test -n "$1[]_$2[]FLAGS"; then
+if test -z "${$1[]_$2[]FLAGS}"; then
     $1[]_$2[]FLAGS=`$CMAKE_BINARY --find-package "-DNAME=$1" "-DCOMPILER_ID=m4_default([$3], [GNU])" "-DLANGUAGE=$2" -DMODE=COMPILE $4` || failed=true
 fi
-if test -n "$1[]_LIBS"; then
+if test -z "${$1[]_LIBS}"; then
     $1[]_LIBS=`$CMAKE_BINARY --find-package "-DNAME=$1" "-DCOMPILER_ID=m4_default([$3], [GNU])" "-DLANGUAGE=$2" -DMODE=LINK $4` || failed=true
 fi
 
diff --git a/share/cmake-3.10/Help/command/FIND_XXX.txt b/share/cmake-3.10/Help/command/FIND_XXX.txt
new file mode 100644
index 0000000..7db221c
--- /dev/null
+++ b/share/cmake-3.10/Help/command/FIND_XXX.txt
@@ -0,0 +1,122 @@
+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"]
+             [NO_DEFAULT_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``, and 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.
+
+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:
+
+.. |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. 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:`;-lists <CMake Language Lists>`.
+   This can be skipped if ``NO_CMAKE_PATH`` is passed.
+
+   * |CMAKE_PREFIX_PATH_XXX|
+   * |CMAKE_XXX_PATH|
+   * |CMAKE_XXX_MAC_PATH|
+
+2. 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.
+
+   * |CMAKE_PREFIX_PATH_XXX|
+   * |CMAKE_XXX_PATH|
+   * |CMAKE_XXX_MAC_PATH|
+
+3. 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.
+
+4. Search the standard system environment variables.
+   This can be skipped if ``NO_SYSTEM_ENVIRONMENT_PATH`` is an argument.
+
+   * |SYSTEM_ENVIRONMENT_PATH_XXX|
+
+5. Search cmake variables defined in the Platform files
+   for the current system.  This can be skipped if ``NO_CMAKE_SYSTEM_PATH``
+   is passed.
+
+   * |CMAKE_SYSTEM_PREFIX_PATH_XXX|
+   * |CMAKE_SYSTEM_XXX_PATH|
+   * |CMAKE_SYSTEM_XXX_MAC_PATH|
+
+6. 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 OS X 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.6/Help/command/FIND_XXX_ORDER.txt b/share/cmake-3.10/Help/command/FIND_XXX_ORDER.txt
similarity index 100%
rename from share/cmake-3.6/Help/command/FIND_XXX_ORDER.txt
rename to share/cmake-3.10/Help/command/FIND_XXX_ORDER.txt
diff --git a/share/cmake-3.6/Help/command/FIND_XXX_ROOT.txt b/share/cmake-3.10/Help/command/FIND_XXX_ROOT.txt
similarity index 100%
rename from share/cmake-3.6/Help/command/FIND_XXX_ROOT.txt
rename to share/cmake-3.10/Help/command/FIND_XXX_ROOT.txt
diff --git a/share/cmake-3.6/Help/command/add_compile_options.rst b/share/cmake-3.10/Help/command/add_compile_options.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/add_compile_options.rst
rename to share/cmake-3.10/Help/command/add_compile_options.rst
diff --git a/share/cmake-3.10/Help/command/add_custom_command.rst b/share/cmake-3.10/Help/command/add_custom_command.rst
new file mode 100644
index 0000000..1b0aa14
--- /dev/null
+++ b/share/cmake-3.10/Help/command/add_custom_command.rst
@@ -0,0 +1,237 @@
+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::
+
+  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]
+                     [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 ``BYPRODUCTS`` option is ignored on non-Ninja generators
+  except to mark byproducts ``GENERATED``.
+
+``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 set, the
+  :prop_tgt:`CROSSCOMPILING_EMULATOR` executable target property will
+  also be prepended to the command to allow the executable to run on
+  the host.
+  (Use the ``TARGET_FILE``
+  :manual:`generator expression <cmake-generator-expressions(7)>` to
+  reference an executable later in the command line.)
+  Additionally a target-level dependency will be added so that the
+  executable 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.
+
+  Arguments to ``COMMAND`` may use
+  :manual:`generator expressions <cmake-generator-expressions(7)>`.
+  References to target names in generator expressions imply target-level
+  dependencies, but NOT file-level dependencies.  List target names with
+  the ``DEPENDS`` option to add file-level dependencies.
+
+``COMMENT``
+  Display the given message before the commands are executed at
+  build time.
+
+``DEPENDS``
+  Specify files on which the command depends.  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.
+  If ``DEPENDS`` is not specified the command will run whenever
+  the ``OUTPUT`` is missing; if the command does not actually
+  create the ``OUTPUT`` then the rule will always run.
+  If ``DEPENDS`` specifies any 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.
+
+  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.
+
+``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.  At most one custom command may specify a
+  given source file as its main dependency.
+
+``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.
+
+``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.
+
+::
+
+  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])
+
+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``
+  Run before any other rules are executed within the target.
+  This is supported only on Visual Studio 8 or later.
+  For all other generators ``PRE_BUILD`` will be treated as
+  ``PRE_LINK``.
+``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.10/Help/command/add_custom_target.rst b/share/cmake-3.10/Help/command/add_custom_target.rst
new file mode 100644
index 0000000..bd61c8b
--- /dev/null
+++ b/share/cmake-3.10/Help/command/add_custom_target.rst
@@ -0,0 +1,123 @@
+add_custom_target
+-----------------
+
+Add a target with no output so it will always be built.
+
+::
+
+  add_custom_target(Name [ALL] [command1 [args1...]]
+                    [COMMAND command2 [args2...] ...]
+                    [DEPENDS depend depend depend ... ]
+                    [BYPRODUCTS [files...]]
+                    [WORKING_DIRECTORY dir]
+                    [COMMENT comment]
+                    [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 ``BYPRODUCTS`` option is ignored on non-Ninja generators
+  except to mark byproducts ``GENERATED``.
+
+``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 set, the
+  :prop_tgt:`CROSSCOMPILING_EMULATOR` executable target property will
+  also be prepended to the command to allow the executable to run on
+  the host.
+  Additionally a target-level dependency will be added so that the
+  executable target will be built before this custom target.
+
+  Arguments to ``COMMAND`` may use
+  :manual:`generator expressions <cmake-generator-expressions(7)>`.
+  References to target names in generator expressions imply target-level
+  dependencies.
+
+  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.
+
+  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.
+
+``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.
diff --git a/share/cmake-3.6/Help/command/add_definitions.rst b/share/cmake-3.10/Help/command/add_definitions.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/add_definitions.rst
rename to share/cmake-3.10/Help/command/add_definitions.rst
diff --git a/share/cmake-3.6/Help/command/add_dependencies.rst b/share/cmake-3.10/Help/command/add_dependencies.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/add_dependencies.rst
rename to share/cmake-3.10/Help/command/add_dependencies.rst
diff --git a/share/cmake-3.10/Help/command/add_executable.rst b/share/cmake-3.10/Help/command/add_executable.rst
new file mode 100644
index 0000000..c088796
--- /dev/null
+++ b/share/cmake-3.10/Help/command/add_executable.rst
@@ -0,0 +1,83 @@
+add_executable
+--------------
+
+Add an executable to the project using the specified source files.
+
+::
+
+  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>``).
+
+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.
+
+--------------------------------------------------------------------------
+
+::
+
+  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.
+
+--------------------------------------------------------------------------
+
+::
+
+  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 :ref:`Imported Target <Imported Targets>` or an
+``ALIAS``.  ``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.10/Help/command/add_library.rst b/share/cmake-3.10/Help/command/add_library.rst
new file mode 100644
index 0000000..de5335e
--- /dev/null
+++ b/share/cmake-3.10/Help/command/add_library.rst
@@ -0,0 +1,165 @@
+add_library
+-----------
+
+.. only:: html
+
+   .. contents::
+
+Add a library to the project using the specified source files.
+
+Normal Libraries
+^^^^^^^^^^^^^^^^
+
+::
+
+  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 ``<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 OS X 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
+^^^^^^^^^^^^^^^^^^
+
+::
+
+  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 such
+property is :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.  See documentation of the
+``IMPORTED_*`` and ``INTERFACE_*`` properties for more information.
+
+Object Libraries
+^^^^^^^^^^^^^^^^
+
+::
+
+  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.  Object libraries
+cannot be linked.  Some native build systems 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
+^^^^^^^^^^^^^^^
+
+::
+
+  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 :ref:`Imported Target <Imported Targets>` or an ``ALIAS``.
+``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
+^^^^^^^^^^^^^^^^^^^
+
+::
+
+  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_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.6/Help/command/add_subdirectory.rst b/share/cmake-3.10/Help/command/add_subdirectory.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/add_subdirectory.rst
rename to share/cmake-3.10/Help/command/add_subdirectory.rst
diff --git a/share/cmake-3.6/Help/command/add_test.rst b/share/cmake-3.10/Help/command/add_test.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/add_test.rst
rename to share/cmake-3.10/Help/command/add_test.rst
diff --git a/share/cmake-3.6/Help/command/aux_source_directory.rst b/share/cmake-3.10/Help/command/aux_source_directory.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/aux_source_directory.rst
rename to share/cmake-3.10/Help/command/aux_source_directory.rst
diff --git a/share/cmake-3.6/Help/command/break.rst b/share/cmake-3.10/Help/command/break.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/break.rst
rename to share/cmake-3.10/Help/command/break.rst
diff --git a/share/cmake-3.6/Help/command/build_command.rst b/share/cmake-3.10/Help/command/build_command.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/build_command.rst
rename to share/cmake-3.10/Help/command/build_command.rst
diff --git a/share/cmake-3.6/Help/command/build_name.rst b/share/cmake-3.10/Help/command/build_name.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/build_name.rst
rename to share/cmake-3.10/Help/command/build_name.rst
diff --git a/share/cmake-3.10/Help/command/cmake_host_system_information.rst b/share/cmake-3.10/Help/command/cmake_host_system_information.rst
new file mode 100644
index 0000000..7199874
--- /dev/null
+++ b/share/cmake-3.10/Help/command/cmake_host_system_information.rst
@@ -0,0 +1,46 @@
+cmake_host_system_information
+-----------------------------
+
+Query host system specific information.
+
+::
+
+  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 megabytes
+``AVAILABLE_VIRTUAL_MEMORY``  Available virtual memory in megabytes
+``TOTAL_PHYSICAL_MEMORY``     Total physical memory in megabytes
+``AVAILABLE_PHYSICAL_MEMORY`` Available physical memory in megabytes
+``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 porcessor supports Ext. MMX instructions
+``HAS_SSE``                   One if porcessor supports SSE instructions
+``HAS_SSE2``                  One if porcessor supports SSE2 instructions
+``HAS_SSE_FP``                One if porcessor supports SSE FP instructions
+``HAS_SSE_MMX``               One if porcessor supports SSE MMX instructions
+``HAS_AMD_3DNOW``             One if porcessor supports 3DNow instructions
+``HAS_AMD_3DNOW_PLUS``        One if porcessor 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`
+============================= ================================================
diff --git a/share/cmake-3.6/Help/command/cmake_minimum_required.rst b/share/cmake-3.10/Help/command/cmake_minimum_required.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/cmake_minimum_required.rst
rename to share/cmake-3.10/Help/command/cmake_minimum_required.rst
diff --git a/share/cmake-3.10/Help/command/cmake_parse_arguments.rst b/share/cmake-3.10/Help/command/cmake_parse_arguments.rst
new file mode 100644
index 0000000..b334a89
--- /dev/null
+++ b/share/cmake-3.10/Help/command/cmake_parse_arguments.rst
@@ -0,0 +1,99 @@
+cmake_parse_arguments
+---------------------
+
+``cmake_parse_arguments`` is intended to be used in macros or functions for
+parsing the arguments given to that macro or function.  It processes the
+arguments and defines a set of variables which hold the values of the
+respective options.
+
+::
+
+  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>)
+
+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 Nth 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 argument
+where recognized. This can be checked afterwards to see
+whether your macro was called with unrecognized parameters.
+
+As an example here a ``my_install()`` macro, which takes similar arguments
+as the real :command:`install` command:
+
+.. code-block:: cmake
+
+   function(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)
+
+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"
+
+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 and
+``MY_INSTALL_OPTIONAL`` will therefore be set to ``TRUE``.
diff --git a/share/cmake-3.6/Help/command/cmake_policy.rst b/share/cmake-3.10/Help/command/cmake_policy.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/cmake_policy.rst
rename to share/cmake-3.10/Help/command/cmake_policy.rst
diff --git a/share/cmake-3.10/Help/command/configure_file.rst b/share/cmake-3.10/Help/command/configure_file.rst
new file mode 100644
index 0000000..e08c573
--- /dev/null
+++ b/share/cmake-3.10/Help/command/configure_file.rst
@@ -0,0 +1,125 @@
+configure_file
+--------------
+
+Copy a file to another location and modify its contents.
+
+::
+
+  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::
+
+  #cmakedefine VAR ...
+
+will be replaced with either::
+
+  #define VAR ...
+
+or::
+
+  /* #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::
+
+  #  cmakedefine VAR
+  #  cmakedefine01 VAR
+
+will be replaced, if ``VAR`` is defined, with::
+
+  #  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.6/Help/command/continue.rst b/share/cmake-3.10/Help/command/continue.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/continue.rst
rename to share/cmake-3.10/Help/command/continue.rst
diff --git a/share/cmake-3.6/Help/command/create_test_sourcelist.rst b/share/cmake-3.10/Help/command/create_test_sourcelist.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/create_test_sourcelist.rst
rename to share/cmake-3.10/Help/command/create_test_sourcelist.rst
diff --git a/share/cmake-3.10/Help/command/ctest_build.rst b/share/cmake-3.10/Help/command/ctest_build.rst
new file mode 100644
index 0000000..55bb4a3
--- /dev/null
+++ b/share/cmake-3.10/Help/command/ctest_build.rst
@@ -0,0 +1,80 @@
+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>``
+  Set the name of the project to build.  This should correspond
+  to the top-level call to the :command:`project` command.
+  If not specified the ``CTEST_PROJECT_NAME`` variable will be checked.
+
+``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.10/Help/command/ctest_configure.rst b/share/cmake-3.10/Help/command/ctest_configure.rst
new file mode 100644
index 0000000..2dea07b
--- /dev/null
+++ b/share/cmake-3.10/Help/command/ctest_configure.rst
@@ -0,0 +1,46 @@
+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.10/Help/command/ctest_coverage.rst b/share/cmake-3.10/Help/command/ctest_coverage.rst
new file mode 100644
index 0000000..8d27b9c
--- /dev/null
+++ b/share/cmake-3.10/Help/command/ctest_coverage.rst
@@ -0,0 +1,46 @@
+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.6/Help/command/ctest_empty_binary_directory.rst b/share/cmake-3.10/Help/command/ctest_empty_binary_directory.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/ctest_empty_binary_directory.rst
rename to share/cmake-3.10/Help/command/ctest_empty_binary_directory.rst
diff --git a/share/cmake-3.10/Help/command/ctest_memcheck.rst b/share/cmake-3.10/Help/command/ctest_memcheck.rst
new file mode 100644
index 0000000..288b65a
--- /dev/null
+++ b/share/cmake-3.10/Help/command/ctest_memcheck.rst
@@ -0,0 +1,38 @@
+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.6/Help/command/ctest_read_custom_files.rst b/share/cmake-3.10/Help/command/ctest_read_custom_files.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/ctest_read_custom_files.rst
rename to share/cmake-3.10/Help/command/ctest_read_custom_files.rst
diff --git a/share/cmake-3.6/Help/command/ctest_run_script.rst b/share/cmake-3.10/Help/command/ctest_run_script.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/ctest_run_script.rst
rename to share/cmake-3.10/Help/command/ctest_run_script.rst
diff --git a/share/cmake-3.6/Help/command/ctest_sleep.rst b/share/cmake-3.10/Help/command/ctest_sleep.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/ctest_sleep.rst
rename to share/cmake-3.10/Help/command/ctest_sleep.rst
diff --git a/share/cmake-3.6/Help/command/ctest_start.rst b/share/cmake-3.10/Help/command/ctest_start.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/ctest_start.rst
rename to share/cmake-3.10/Help/command/ctest_start.rst
diff --git a/share/cmake-3.10/Help/command/ctest_submit.rst b/share/cmake-3.10/Help/command/ctest_submit.rst
new file mode 100644
index 0000000..6b49da3
--- /dev/null
+++ b/share/cmake-3.10/Help/command/ctest_submit.rst
@@ -0,0 +1,77 @@
+ctest_submit
+------------
+
+Perform the :ref:`CTest Submit Step` as a :ref:`Dashboard Client`.
+
+::
+
+  ctest_submit([PARTS <part>...] [FILES <file>...]
+               [HTTPHEADER <header>]
+               [RETRY_COUNT <count>]
+               [RETRY_DELAY <delay>]
+               [RETURN_VALUE <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
+
+``FILES <file>...``
+  Specify an explicit list of specific files to be submitted.
+  Each individual file must exist at the time of the call.
+
+``HTTPHEADER <HTTP-header>``
+  Specify HTTP header to be included in the request to CDash during submission.
+  This suboption can be repeated several times.
+
+``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.
+
+``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>]
+               [HTTPHEADER <header>]
+               [RETRY_COUNT <count>]
+               [RETRY_DELAY <delay>]
+               [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 ``HTTPHEADER``, ``RETRY_COUNT``, ``RETRY_DELAY``, and
+``QUIET`` options as described above.
diff --git a/share/cmake-3.10/Help/command/ctest_test.rst b/share/cmake-3.10/Help/command/ctest_test.rst
new file mode 100644
index 0000000..4a69491
--- /dev/null
+++ b/share/cmake-3.10/Help/command/ctest_test.rst
@@ -0,0 +1,114 @@
+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>]
+             [TEST_LOAD <threshold>]
+             [SCHEDULE_RANDOM <ON|OFF>]
+             [STOP_TIME <time-of-day>]
+             [RETURN_VALUE <result-var>]
+             [CAPTURE_CMAKE_ERROR <result-var>]
+             [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.
+
+``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`.
+
+``SCHEDULE_RANDOM <ON|OFF>``
+  Launch tests in a random order.  This may be useful for detecting
+  implicit test dependencies.
+
+``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.6/Help/command/ctest_update.rst b/share/cmake-3.10/Help/command/ctest_update.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/ctest_update.rst
rename to share/cmake-3.10/Help/command/ctest_update.rst
diff --git a/share/cmake-3.10/Help/command/ctest_upload.rst b/share/cmake-3.10/Help/command/ctest_upload.rst
new file mode 100644
index 0000000..39d9de1
--- /dev/null
+++ b/share/cmake-3.10/Help/command/ctest_upload.rst
@@ -0,0 +1,22 @@
+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.6/Help/command/define_property.rst b/share/cmake-3.10/Help/command/define_property.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/define_property.rst
rename to share/cmake-3.10/Help/command/define_property.rst
diff --git a/share/cmake-3.6/Help/command/else.rst b/share/cmake-3.10/Help/command/else.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/else.rst
rename to share/cmake-3.10/Help/command/else.rst
diff --git a/share/cmake-3.6/Help/command/elseif.rst b/share/cmake-3.10/Help/command/elseif.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/elseif.rst
rename to share/cmake-3.10/Help/command/elseif.rst
diff --git a/share/cmake-3.6/Help/command/enable_language.rst b/share/cmake-3.10/Help/command/enable_language.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/enable_language.rst
rename to share/cmake-3.10/Help/command/enable_language.rst
diff --git a/share/cmake-3.6/Help/command/enable_testing.rst b/share/cmake-3.10/Help/command/enable_testing.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/enable_testing.rst
rename to share/cmake-3.10/Help/command/enable_testing.rst
diff --git a/share/cmake-3.6/Help/command/endforeach.rst b/share/cmake-3.10/Help/command/endforeach.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/endforeach.rst
rename to share/cmake-3.10/Help/command/endforeach.rst
diff --git a/share/cmake-3.6/Help/command/endfunction.rst b/share/cmake-3.10/Help/command/endfunction.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/endfunction.rst
rename to share/cmake-3.10/Help/command/endfunction.rst
diff --git a/share/cmake-3.6/Help/command/endif.rst b/share/cmake-3.10/Help/command/endif.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/endif.rst
rename to share/cmake-3.10/Help/command/endif.rst
diff --git a/share/cmake-3.6/Help/command/endmacro.rst b/share/cmake-3.10/Help/command/endmacro.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/endmacro.rst
rename to share/cmake-3.10/Help/command/endmacro.rst
diff --git a/share/cmake-3.6/Help/command/endwhile.rst b/share/cmake-3.10/Help/command/endwhile.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/endwhile.rst
rename to share/cmake-3.10/Help/command/endwhile.rst
diff --git a/share/cmake-3.6/Help/command/exec_program.rst b/share/cmake-3.10/Help/command/exec_program.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/exec_program.rst
rename to share/cmake-3.10/Help/command/exec_program.rst
diff --git a/share/cmake-3.10/Help/command/execute_process.rst b/share/cmake-3.10/Help/command/execute_process.rst
new file mode 100644
index 0000000..799493f
--- /dev/null
+++ b/share/cmake-3.10/Help/command/execute_process.rst
@@ -0,0 +1,106 @@
+execute_process
+---------------
+
+Execute one or more child processes.
+
+.. code-block:: cmake
+
+  execute_process(COMMAND <cmd1> [args1...]]
+                  [COMMAND <cmd2> [args2...] [...]]
+                  [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]
+                  [OUTPUT_STRIP_TRAILING_WHITESPACE]
+                  [ERROR_STRIP_TRAILING_WHITESPACE]
+                  [ENCODING <name>])
+
+Runs the given sequence of one or more commands in parallel 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``
+ The child processes will be terminated if they do not finish in the
+ specified number of seconds (fractions are allowed).
+
+``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:`;-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.
+
+``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``
+   Use the UTF-8 codepage.
+
+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.10/Help/command/export.rst b/share/cmake-3.10/Help/command/export.rst
new file mode 100644
index 0000000..53675a7
--- /dev/null
+++ b/share/cmake-3.10/Help/command/export.rst
@@ -0,0 +1,72 @@
+export
+------
+
+Export targets from the build tree for use by outside projects.
+
+::
+
+  export(EXPORT <export-name> [NAMESPACE <namespace>] [FILE <filename>])
+
+Create 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.
+
+::
+
+  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.
+
+::
+
+  export(PACKAGE <name>)
+
+Store the current build directory in the CMake user package registry
+for package ``<name>``.  The find_package command may consider the
+directory while searching for package ``<name>``.  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 (``<name>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. If the :variable:`CMAKE_EXPORT_NO_PACKAGE_REGISTRY` variable
+is enabled, the ``export(PACKAGE)`` command will do nothing.
+
+::
+
+  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.6/Help/command/export_library_dependencies.rst b/share/cmake-3.10/Help/command/export_library_dependencies.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/export_library_dependencies.rst
rename to share/cmake-3.10/Help/command/export_library_dependencies.rst
diff --git a/share/cmake-3.10/Help/command/file.rst b/share/cmake-3.10/Help/command/file.rst
new file mode 100644
index 0000000..edccac5
--- /dev/null
+++ b/share/cmake-3.10/Help/command/file.rst
@@ -0,0 +1,379 @@
+file
+----
+
+File manipulation command.
+
+------------------------------------------------------------------------------
+
+::
+
+  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.
+
+------------------------------------------------------------------------------
+
+::
+
+  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).
+
+------------------------------------------------------------------------------
+
+::
+
+  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.
+
+------------------------------------------------------------------------------
+
+::
+
+  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.
+
+------------------------------------------------------------------------------
+
+::
+
+  file(GLOB <variable>
+       [LIST_DIRECTORIES true|false] [RELATIVE <path>]
+       [<globbing-expressions>...])
+  file(GLOB_RECURSE <variable> [FOLLOW_SYMLINKS]
+       [LIST_DIRECTORIES true|false] [RELATIVE <path>]
+       [<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.
+
+By default ``GLOB`` lists directories - directories are omited 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.
+
+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
+``OLD`` then ``LIST_DIRECTORIES`` treats symlinks as directories.
+
+Examples of recursive globbing include::
+
+  /dir/*.py  - match all python files in /dir and subdirectories
+
+------------------------------------------------------------------------------
+
+::
+
+  file(RENAME <oldname> <newname>)
+
+Move a file or directory within a filesystem from ``<oldname>`` to
+``<newname>``, replacing the destination atomically.
+
+------------------------------------------------------------------------------
+
+::
+
+  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.
+
+------------------------------------------------------------------------------
+
+::
+
+  file(MAKE_DIRECTORY [<directories>...])
+
+Create the given directories and their parents as needed.
+
+------------------------------------------------------------------------------
+
+::
+
+  file(RELATIVE_PATH <variable> <directory> <file>)
+
+Compute the relative path from a ``<directory>`` to a ``<file>`` and
+store it in the ``<variable>``.
+
+------------------------------------------------------------------------------
+
+::
+
+  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.
+
+------------------------------------------------------------------------------
+
+::
+
+  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.
+
+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>``.
+
+``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 and/or use ``EXPECTED_HASH`` to verify downloaded content.
+If neither ``TLS`` option is given CMake will check variables
+``CMAKE_TLS_VERIFY`` and ``CMAKE_TLS_CAINFO``, respectively.
+
+------------------------------------------------------------------------------
+
+::
+
+  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.
+
+------------------------------------------------------------------------------
+
+::
+
+  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.
+
+------------------------------------------------------------------------------
+
+::
+
+  file(<COPY|INSTALL> <files>... DESTINATION <dir>
+       [FILE_PERMISSIONS <permissions>...]
+       [DIRECTORY_PERMISSIONS <permissions>...]
+       [NO_SOURCE_PERMISSIONS] [USE_SOURCE_PERMISSIONS]
+       [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``).
+
+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).
+
+------------------------------------------------------------------------------
+
+::
+
+  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.
diff --git a/share/cmake-3.6/Help/command/find_file.rst b/share/cmake-3.10/Help/command/find_file.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/find_file.rst
rename to share/cmake-3.10/Help/command/find_file.rst
diff --git a/share/cmake-3.10/Help/command/find_library.rst b/share/cmake-3.10/Help/command/find_library.rst
new file mode 100644
index 0000000..f774f17
--- /dev/null
+++ b/share/cmake-3.10/Help/command/find_library.rst
@@ -0,0 +1,79 @@
+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``
+
+.. |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:: Directories in ``LIB``.
+   On Windows hosts:
+   ``<prefix>/lib/<arch>`` if :variable:`CMAKE_LIBRARY_ARCHITECTURE` is set,
+   and |SYSTEM_ENVIRONMENT_PREFIX_PATH_XXX_SUBDIR|,
+   and the directories in ``PATH`` itself.
+
+.. |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.10/Help/command/find_package.rst b/share/cmake-3.10/Help/command/find_package.rst
new file mode 100644
index 0000000..83f4716
--- /dev/null
+++ b/share/cmake-3.10/Help/command/find_package.rst
@@ -0,0 +1,360 @@
+find_package
+------------
+
+Load settings for an external project.
+
+::
+
+  find_package(<package> [version] [EXACT] [QUIET] [MODULE]
+               [REQUIRED] [[COMPONENTS] [components...]]
+               [OPTIONAL_COMPONENTS components...]
+               [NO_POLICY_SCOPE])
+
+Finds and loads settings from an external project.  ``<package>_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 messages if the package cannot be found.  The
+``MODULE`` option disables the second signature documented below.  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 (details below).
+
+User code should generally look for packages using the above simple
+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 command has two modes by which it searches for packages: "Module"
+mode and "Config" mode.  Module mode is available when the command is
+invoked with the above reduced signature.  CMake searches for a file
+called ``Find<package>.cmake`` in the :variable:`CMAKE_MODULE_PATH`
+followed 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.  Many
+find-modules provide limited or no support for versioning; check
+the module documentation.  If no module is found and the ``MODULE``
+option is not given the command proceeds to Config mode.
+
+The complete Config mode command signature is::
+
+  find_package(<package> [version] [EXACT] [QUIET]
+               [REQUIRED] [[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_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 may be used to skip Module mode explicitly and
+switch to Config mode.  It is synonymous to using ``NO_MODULE``.  Config
+mode is also implied by use of options not specified in the reduced
+signature.
+
+Config mode attempts to locate a configuration file provided by the
+package to be found.  A cache entry called ``<package>_DIR`` is created to
+hold the directory containing the file.  By default the command
+searches for a package with the name ``<package>``.  If the ``NAMES`` option
+is given the names following it are used instead of ``<package>``.  The
+command searches for a file called ``<name>Config.cmake`` or
+``<lower-case-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 ``<package>_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 ``<package>_CONSIDERED_CONFIGS``,
+the associated versions in ``<package>_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
+``<package>_DIR`` has been set to a directory not containing a
+configuration file CMake will ignore it and search from scratch.
+
+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 ``<package>`` name
+``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:
+
+``<package>_VERSION``
+  full provided version string
+``<package>_VERSION_MAJOR``
+  major version if provided, else 0
+``<package>_VERSION_MINOR``
+  minor version if provided, else 0
+``<package>_VERSION_PATCH``
+  patch version if provided, else 0
+``<package>_VERSION_TWEAK``
+  tweak version if provided, else 0
+``<package>_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 compatibiliy 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::
+
+  SET(CMAKE_FIND_PACKAGE_SORT_ORDER NATURAL)
+  SET(CMAKE_FIND_PACKAGE_SORT_DIRECTION DEC)
+
+before calling ``find_package``.
+
+Config mode provides an elaborate interface and search procedure.
+Much of the interface is provided for completeness and for use
+internally by find-modules loaded by Module mode.  Most user code
+should simply call::
+
+  find_package(<package> [major[.minor]] [EXACT] [REQUIRED|QUIET])
+
+in order to find a package.  Package maintainers providing CMake
+package configuration files are encouraged to name and install them
+such that the procedure outlined below will find them without
+requiring use of additional options.
+
+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 OS X Frameworks and Application Bundles the
+following directories are searched for frameworks or 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 (``<package>`` or names given by ``NAMES``).
+Paths with ``lib/<arch>`` are enabled if the
+:variable:`CMAKE_LIBRARY_ARCHITECTURE` variable is set.  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 cmake-specific cache variables.  These
+   are intended to be used on the command line with a ``-DVAR=value``.
+   The values are interpreted as :ref:`;-lists <CMake Language Lists>`.
+   This can be skipped if ``NO_CMAKE_PATH`` is passed::
+
+     CMAKE_PREFIX_PATH
+     CMAKE_FRAMEWORK_PATH
+     CMAKE_APPBUNDLE_PATH
+
+2. 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::
+
+     <package>_DIR
+     CMAKE_PREFIX_PATH
+     CMAKE_FRAMEWORK_PATH
+     CMAKE_APPBUNDLE_PATH
+
+3. 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.
+
+4. Search the standard system environment variables.  This can be
+   skipped if ``NO_SYSTEM_ENVIRONMENT_PATH`` is passed.  Path entries
+   ending in ``/bin`` or ``/sbin`` are automatically converted to their
+   parent directories::
+
+     PATH
+
+5. 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:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY`
+   to ``TRUE``.
+   See the :manual:`cmake-packages(7)` manual for details on the user
+   package registry.
+
+6. Search cmake variables defined in the Platform files for the
+   current system.  This can be skipped if ``NO_CMAKE_SYSTEM_PATH`` is
+   passed::
+
+     CMAKE_SYSTEM_PREFIX_PATH
+     CMAKE_SYSTEM_FRAMEWORK_PATH
+     CMAKE_SYSTEM_APPBUNDLE_PATH
+
+7. 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_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY` to ``TRUE``.
+   See the :manual:`cmake-packages(7)` manual for details on the system
+   package registry.
+
+8. Search paths specified by the ``PATHS`` option.  These are typically
+   hard-coded guesses.
+
+.. |FIND_XXX| replace:: find_package
+.. |FIND_ARGS_XXX| replace:: <package>
+.. |CMAKE_FIND_ROOT_PATH_MODE_XXX| replace::
+   :variable:`CMAKE_FIND_ROOT_PATH_MODE_PACKAGE`
+
+.. include:: FIND_XXX_ROOT.txt
+.. include:: FIND_XXX_ORDER.txt
+
+Every non-REQUIRED ``find_package`` call can be disabled by setting the
+:variable:`CMAKE_DISABLE_FIND_PACKAGE_<PackageName>` variable to ``TRUE``.
+
+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 ``<package>`` name which is searched for
+``<package>_FIND_REQUIRED``
+  true if ``REQUIRED`` option was given
+``<package>_FIND_QUIETLY``
+  true if ``QUIET`` option was given
+``<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
+``<package>_FIND_VERSION_EXACT``
+  true if ``EXACT`` option was given
+``<package>_FIND_COMPONENTS``
+  list of requested components
+``<package>_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
+``<package>_FOUND`` to false to tell ``find_package`` that component
+requirements are not satisfied.
+
+See the :command:`cmake_policy` command documentation for discussion
+of the ``NO_POLICY_SCOPE`` option.
diff --git a/share/cmake-3.6/Help/command/find_path.rst b/share/cmake-3.10/Help/command/find_path.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/find_path.rst
rename to share/cmake-3.10/Help/command/find_path.rst
diff --git a/share/cmake-3.6/Help/command/find_program.rst b/share/cmake-3.10/Help/command/find_program.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/find_program.rst
rename to share/cmake-3.10/Help/command/find_program.rst
diff --git a/share/cmake-3.6/Help/command/fltk_wrap_ui.rst b/share/cmake-3.10/Help/command/fltk_wrap_ui.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/fltk_wrap_ui.rst
rename to share/cmake-3.10/Help/command/fltk_wrap_ui.rst
diff --git a/share/cmake-3.6/Help/command/foreach.rst b/share/cmake-3.10/Help/command/foreach.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/foreach.rst
rename to share/cmake-3.10/Help/command/foreach.rst
diff --git a/share/cmake-3.6/Help/command/function.rst b/share/cmake-3.10/Help/command/function.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/function.rst
rename to share/cmake-3.10/Help/command/function.rst
diff --git a/share/cmake-3.10/Help/command/get_cmake_property.rst b/share/cmake-3.10/Help/command/get_cmake_property.rst
new file mode 100644
index 0000000..497ab4e
--- /dev/null
+++ b/share/cmake-3.10/Help/command/get_cmake_property.rst
@@ -0,0 +1,20 @@
+get_cmake_property
+------------------
+
+Get a global property of the CMake instance.
+
+::
+
+  get_cmake_property(VAR property)
+
+Get a global property from the CMake instance.  The value of the property is
+stored in the variable ``VAR``.  If the property is not found, ``VAR``
+will be  set to "NOTFOUND".  See the :manual:`cmake-properties(7)` manual
+for available properties.
+
+See also the :command:`get_property` command ``GLOBAL`` option.
+
+In addition to global properties, this command (for historical reasons)
+also supports the :prop_dir:`VARIABLES` and :prop_dir:`MACROS` directory
+properties.  It also supports a special ``COMPONENTS`` global property that
+lists the components given to the :command:`install` command.
diff --git a/share/cmake-3.6/Help/command/get_directory_property.rst b/share/cmake-3.10/Help/command/get_directory_property.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/get_directory_property.rst
rename to share/cmake-3.10/Help/command/get_directory_property.rst
diff --git a/share/cmake-3.6/Help/command/get_filename_component.rst b/share/cmake-3.10/Help/command/get_filename_component.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/get_filename_component.rst
rename to share/cmake-3.10/Help/command/get_filename_component.rst
diff --git a/share/cmake-3.6/Help/command/get_property.rst b/share/cmake-3.10/Help/command/get_property.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/get_property.rst
rename to share/cmake-3.10/Help/command/get_property.rst
diff --git a/share/cmake-3.6/Help/command/get_source_file_property.rst b/share/cmake-3.10/Help/command/get_source_file_property.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/get_source_file_property.rst
rename to share/cmake-3.10/Help/command/get_source_file_property.rst
diff --git a/share/cmake-3.6/Help/command/get_target_property.rst b/share/cmake-3.10/Help/command/get_target_property.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/get_target_property.rst
rename to share/cmake-3.10/Help/command/get_target_property.rst
diff --git a/share/cmake-3.6/Help/command/get_test_property.rst b/share/cmake-3.10/Help/command/get_test_property.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/get_test_property.rst
rename to share/cmake-3.10/Help/command/get_test_property.rst
diff --git a/share/cmake-3.10/Help/command/if.rst b/share/cmake-3.10/Help/command/if.rst
new file mode 100644
index 0000000..f04f233
--- /dev/null
+++ b/share/cmake-3.10/Help/command/if.rst
@@ -0,0 +1,244 @@
+if
+--
+
+Conditionally execute a group of commands.
+
+.. code-block:: cmake
+
+ if(expression)
+   # then section.
+   COMMAND1(ARGS ...)
+   COMMAND2(ARGS ...)
+   #...
+ elseif(expression2)
+   # elseif section.
+   COMMAND1(ARGS ...)
+   COMMAND2(ARGS ...)
+   #...
+ else(expression)
+   # else section.
+   COMMAND1(ARGS ...)
+   COMMAND2(ARGS ...)
+   #...
+ endif(expression)
+
+Evaluates the given expression.  If the result is true, the commands
+in the THEN section are invoked.  Otherwise, the commands in the else
+section are invoked.  The elseif and else sections are optional.  You
+may have multiple elseif clauses.  Note that the expression in the
+else and endif clause is optional.  Long expressions can be used and
+there is a traditional order of precedence.  Parenthetical expressions
+are evaluated first followed by unary tests such as ``EXISTS``,
+``COMMAND``, and ``DEFINED``.  Then any 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`` will be evaluated.  Then boolean ``NOT`` operators and
+finally boolean ``AND`` and then ``OR`` operators will be evaluated.
+
+Possible expressions 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 <expression>)``
+ True if the expression is not true.
+
+``if(<expr1> AND <expr2>)``
+ True if both expressions would be considered true individually.
+
+``if(<expr1> OR <expr2>)``
+ True if either expression 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.
+
+``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
+ expression.  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]]]``).
+
+``if(<variable|string> VERSION_GREATER <variable|string>)``
+ Component-wise integer version number comparison (version format is
+ ``major[.minor[.patch[.tweak]]]``).
+
+``if(<variable|string> VERSION_EQUAL <variable|string>)``
+ Component-wise integer version number comparison (version format is
+ ``major[.minor[.patch[.tweak]]]``).
+
+``if(<variable|string> VERSION_LESS_EQUAL <variable|string>)``
+ Component-wise integer version number comparison (version format is
+ ``major[.minor[.patch[.tweak]]]``).
+
+``if(<variable|string> VERSION_GREATER_EQUAL <variable|string>)``
+ Component-wise integer version number comparison (version format is
+ ``major[.minor[.patch[.tweak]]]``).
+
+``if(<variable|string> IN_LIST <variable>)``
+ True if the given element is contained in the named list variable.
+
+``if(DEFINED <variable>)``
+ True if the given variable is defined.  It does not matter if the
+ variable is true or false just if it has been set.  (Note macro
+ arguments are not variables.)
+
+``if((expression) AND (expression OR (expression)))``
+ The expressions inside the parenthesis are evaluated first and then
+ the remaining expression is evaluated as in the previous examples.
+ Where there are nested parenthesis the innermost are evaluated as part
+ of evaluating the expression that contains them.
+
+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::
+
+ set(var1 OFF)
+ set(var2 "var1")
+ if(${var2})
+
+appears to the if command as::
+
+ 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::
+
+ 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 signature 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`.
diff --git a/share/cmake-3.10/Help/command/include.rst b/share/cmake-3.10/Help/command/include.rst
new file mode 100644
index 0000000..eeca4c6
--- /dev/null
+++ b/share/cmake-3.10/Help/command/include.rst
@@ -0,0 +1,25 @@
+include
+-------
+
+Load and run CMake code from a file or module.
+
+::
+
+  include(<file|module> [OPTIONAL] [RESULT_VARIABLE <VAR>]
+                        [NO_POLICY_SCOPE])
+
+Load and run CMake code from the file given.  Variable reads and
+writes access the scope of the caller (dynamic scoping).  If ``OPTIONAL``
+is present, then no error is raised if the file does not exist.  If
+``RESULT_VARIABLE`` is given the variable will be set to the full filename
+which has been included or NOTFOUND if it failed.
+
+If a module is specified instead of a file, the file with name
+``<modulename>.cmake`` is searched first in :variable:`CMAKE_MODULE_PATH`,
+then in the CMake module directory.  There is one exception to this: if
+the file which calls ``include()`` is located itself in the CMake builtin
+module directory, then first the CMake builtin module directory is searched and
+:variable:`CMAKE_MODULE_PATH` afterwards.  See also policy :policy:`CMP0017`.
+
+See the :command:`cmake_policy` command documentation for discussion of the
+``NO_POLICY_SCOPE`` option.
diff --git a/share/cmake-3.6/Help/command/include_directories.rst b/share/cmake-3.10/Help/command/include_directories.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/include_directories.rst
rename to share/cmake-3.10/Help/command/include_directories.rst
diff --git a/share/cmake-3.10/Help/command/include_external_msproject.rst b/share/cmake-3.10/Help/command/include_external_msproject.rst
new file mode 100644
index 0000000..335282a
--- /dev/null
+++ b/share/cmake-3.10/Help/command/include_external_msproject.rst
@@ -0,0 +1,26 @@
+include_external_msproject
+--------------------------
+
+Include an external Microsoft project file in a workspace.
+
+::
+
+  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.10/Help/command/include_guard.rst b/share/cmake-3.10/Help/command/include_guard.rst
new file mode 100644
index 0000000..62cce22
--- /dev/null
+++ b/share/cmake-3.10/Help/command/include_guard.rst
@@ -0,0 +1,46 @@
+include_guard
+-------------
+
+Provides an include guard for the file currently being processed by 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.6/Help/command/include_regular_expression.rst b/share/cmake-3.10/Help/command/include_regular_expression.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/include_regular_expression.rst
rename to share/cmake-3.10/Help/command/include_regular_expression.rst
diff --git a/share/cmake-3.10/Help/command/install.rst b/share/cmake-3.10/Help/command/install.rst
new file mode 100644
index 0000000..58438b7
--- /dev/null
+++ b/share/cmake-3.10/Help/command/install.rst
@@ -0,0 +1,380 @@
+install
+-------
+
+.. only:: html
+
+   .. contents::
+
+Specify rules to run at install time.
+
+Introduction
+^^^^^^^^^^^^
+
+This command generates installation rules for a project.  Rules
+specified by calls to this command within a source directory are
+executed in order during installation.  The order across directories
+is not defined.
+
+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.
+  If a full path (with a leading slash or drive letter) is given
+  it is used directly.  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.
+
+``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.).
+
+``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.
+
+Installing Targets
+^^^^^^^^^^^^^^^^^^
+
+::
+
+  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>]
+           [OPTIONAL] [EXCLUDE_FROM_ALL]
+           [NAMELINK_ONLY|NAMELINK_SKIP]
+          ] [...]
+          [INCLUDES DESTINATION [<dir> ...]]
+          )
+
+The ``TARGETS`` form specifies rules for installing targets from a
+project.  There are six kinds of target files that may be installed:
+``ARCHIVE``, ``LIBRARY``, ``RUNTIME``, ``OBJECTS``, ``FRAMEWORK``, and
+``BUNDLE``. Executables are treated as ``RUNTIME`` targets, except that
+those marked with the ``MACOSX_BUNDLE`` property are treated as ``BUNDLE``
+targets on OS X.  Static libraries are treated as ``ARCHIVE`` targets,
+except that those marked with the ``FRAMEWORK`` property are treated
+as ``FRAMEWORK`` targets on OS X.
+Module libraries are always treated as ``LIBRARY`` targets.
+For non-DLL platforms shared libraries are treated as ``LIBRARY``
+targets, except that those marked with the ``FRAMEWORK`` property are
+treated as ``FRAMEWORK`` targets on OS X.  For DLL platforms the DLL
+part of a shared library is treated as a ``RUNTIME`` target and the
+corresponding import library is treated as an ``ARCHIVE`` target.
+All Windows-based systems including Cygwin are DLL platforms. Object
+libraries are always treated as ``OBJECTS`` targets.
+The ``ARCHIVE``, ``LIBRARY``, ``RUNTIME``, ``OBJECTS``, and ``FRAMEWORK``
+arguments change the type of target to which the subsequent properties
+apply. 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).
+
+The ``PRIVATE_HEADER``, ``PUBLIC_HEADER``, and ``RESOURCE`` arguments
+cause subsequent properties to be applied to installing a ``FRAMEWORK``
+shared library target's associated files on non-Apple platforms.  Rules
+defined by these arguments are ignored on Apple platforms because the
+associated files are installed into the appropriate locations inside
+the framework folder.  See documentation of the
+:prop_tgt:`PRIVATE_HEADER`, :prop_tgt:`PUBLIC_HEADER`, and
+:prop_tgt:`RESOURCE` target properties for details.
+
+Either ``NAMELINK_ONLY`` or ``NAMELINK_SKIP`` may be specified as a
+``LIBRARY`` option.  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_ONLY`` option causes installation of only the
+namelink when a library target is installed.  The ``NAMELINK_SKIP`` option
+causes installation of library files other than the namelink when a
+library target is installed.  When neither option is given both
+portions are installed.  On platforms where versioned shared libraries
+do not have namelinks or when a library is not versioned the
+``NAMELINK_SKIP`` option installs the library and the ``NAMELINK_ONLY``
+option installs nothing.  See the :prop_tgt:`VERSION` and
+:prop_tgt:`SOVERSION` target properties for details on creating versioned
+shared libraries.
+
+The ``INCLUDES DESTINATION`` 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
+:command:`install(EXPORT)` command.  If a relative path is
+specified, it is treated as relative to the ``$<INSTALL_PREFIX>``.
+This is independent of the rest of the argument groups and does
+not actually install anything.
+
+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``.
+
+The ``EXPORT`` option associates the installed target files with an
+export called ``<export-name>``.  It must appear before any ``RUNTIME``,
+``LIBRARY``, ``ARCHIVE``, or ``OBJECTS`` options.  To actually install the
+export file itself, call ``install(EXPORT)``, documented below.
+
+Installing a target with the :prop_tgt:`EXCLUDE_FROM_ALL` target property
+set to ``TRUE`` has undefined behavior.
+
+The install destination given to the target install ``DESTINATION`` may
+use "generator expressions" with the syntax ``$<...>``.  See the
+:manual:`cmake-generator-expressions(7)` manual for available expressions.
+
+Installing Files
+^^^^^^^^^^^^^^^^
+
+::
+
+  install(<FILES|PROGRAMS> files... 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.
+
+The install destination given to the files install ``DESTINATION`` may
+use "generator expressions" with the syntax ``$<...>``.  See the
+:manual:`cmake-generator-expressions(7)` manual for available expressions.
+
+Installing Directories
+^^^^^^^^^^^^^^^^^^^^^^
+
+::
+
+  install(DIRECTORY dirs... 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.
+
+The list of ``dirs...`` given to ``DIRECTORY`` and the install destination
+given to the directory install ``DESTINATION`` may use "generator expressions"
+with the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
+manual for available expressions.
+
+Custom Installation Logic
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+::
+
+  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.
+
+Installing Exports
+^^^^^^^^^^^^^^^^^^
+
+::
+
+  install(EXPORT <export-name> DESTINATION <dir>
+          [NAMESPACE <namespace>] [[FILE <name>.cmake]|
+          [EXPORT_ANDROID_MK <name>.mk]]
+          [PERMISSIONS permissions...]
+          [CONFIGURATIONS [Debug|Release|...]]
+          [EXPORT_LINK_INTERFACE_LIBRARIES]
+          [COMPONENT <component>]
+          [EXCLUDE_FROM_ALL])
+
+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``.  If a ``COMPONENT`` option is
+specified that does not match that given to the targets associated with
+``<export-name>`` the behavior is undefined.  If a library target is
+included in the export but a target to which it links is not included
+the behavior is unspecified.
+
+In additon to cmake language files, the ``EXPORT_ANDROID_MK`` option maybe
+used to specifiy an export to the android ndk build system.  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 myexp 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>/lib/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.
diff --git a/share/cmake-3.6/Help/command/install_files.rst b/share/cmake-3.10/Help/command/install_files.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/install_files.rst
rename to share/cmake-3.10/Help/command/install_files.rst
diff --git a/share/cmake-3.6/Help/command/install_programs.rst b/share/cmake-3.10/Help/command/install_programs.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/install_programs.rst
rename to share/cmake-3.10/Help/command/install_programs.rst
diff --git a/share/cmake-3.6/Help/command/install_targets.rst b/share/cmake-3.10/Help/command/install_targets.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/install_targets.rst
rename to share/cmake-3.10/Help/command/install_targets.rst
diff --git a/share/cmake-3.6/Help/command/link_directories.rst b/share/cmake-3.10/Help/command/link_directories.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/link_directories.rst
rename to share/cmake-3.10/Help/command/link_directories.rst
diff --git a/share/cmake-3.6/Help/command/link_libraries.rst b/share/cmake-3.10/Help/command/link_libraries.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/link_libraries.rst
rename to share/cmake-3.10/Help/command/link_libraries.rst
diff --git a/share/cmake-3.6/Help/command/list.rst b/share/cmake-3.10/Help/command/list.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/list.rst
rename to share/cmake-3.10/Help/command/list.rst
diff --git a/share/cmake-3.6/Help/command/load_cache.rst b/share/cmake-3.10/Help/command/load_cache.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/load_cache.rst
rename to share/cmake-3.10/Help/command/load_cache.rst
diff --git a/share/cmake-3.6/Help/command/load_command.rst b/share/cmake-3.10/Help/command/load_command.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/load_command.rst
rename to share/cmake-3.10/Help/command/load_command.rst
diff --git a/share/cmake-3.6/Help/command/macro.rst b/share/cmake-3.10/Help/command/macro.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/macro.rst
rename to share/cmake-3.10/Help/command/macro.rst
diff --git a/share/cmake-3.6/Help/command/make_directory.rst b/share/cmake-3.10/Help/command/make_directory.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/make_directory.rst
rename to share/cmake-3.10/Help/command/make_directory.rst
diff --git a/share/cmake-3.6/Help/command/mark_as_advanced.rst b/share/cmake-3.10/Help/command/mark_as_advanced.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/mark_as_advanced.rst
rename to share/cmake-3.10/Help/command/mark_as_advanced.rst
diff --git a/share/cmake-3.10/Help/command/math.rst b/share/cmake-3.10/Help/command/math.rst
new file mode 100644
index 0000000..f99dc3d
--- /dev/null
+++ b/share/cmake-3.10/Help/command/math.rst
@@ -0,0 +1,14 @@
+math
+----
+
+Mathematical expressions.
+
+::
+
+  math(EXPR <output-variable> <math-expression>)
+
+``EXPR`` evaluates mathematical expression and returns result in the
+output variable.  Example mathematical expression is ``5 * (10 + 13)``.
+Supported operators are ``+``, ``-``, ``*``, ``/``, ``%``, ``|``, ``&``,
+``^``, ``~``, ``<<``, ``>>``, and ``(...)``.  They have the same meaning
+as they do in C code.
diff --git a/share/cmake-3.6/Help/command/message.rst b/share/cmake-3.10/Help/command/message.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/message.rst
rename to share/cmake-3.10/Help/command/message.rst
diff --git a/share/cmake-3.6/Help/command/option.rst b/share/cmake-3.10/Help/command/option.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/option.rst
rename to share/cmake-3.10/Help/command/option.rst
diff --git a/share/cmake-3.6/Help/command/output_required_files.rst b/share/cmake-3.10/Help/command/output_required_files.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/output_required_files.rst
rename to share/cmake-3.10/Help/command/output_required_files.rst
diff --git a/share/cmake-3.10/Help/command/project.rst b/share/cmake-3.10/Help/command/project.rst
new file mode 100644
index 0000000..139f69c
--- /dev/null
+++ b/share/cmake-3.10/Help/command/project.rst
@@ -0,0 +1,69 @@
+project
+-------
+
+Set a name, version, and enable languages for the entire project.
+
+.. code-block:: cmake
+
+ project(<PROJECT-NAME> [LANGUAGES] [<language-name>...])
+ project(<PROJECT-NAME>
+         [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]
+         [DESCRIPTION <project-description-string>]
+         [LANGUAGES <language-name>...])
+
+Sets the name of the project and stores the name in the
+:variable:`PROJECT_NAME` variable.  Additionally this sets variables
+
+* :variable:`PROJECT_SOURCE_DIR`,
+  :variable:`<PROJECT-NAME>_SOURCE_DIR`
+* :variable:`PROJECT_BINARY_DIR`,
+  :variable:`<PROJECT-NAME>_BINARY_DIR`
+
+If ``VERSION`` is specified, given components must be non-negative integers.
+If ``VERSION`` is not specified, the default version is the empty string.
+The ``VERSION`` option may not be used unless policy :policy:`CMP0048` is
+set to ``NEW``.
+
+The :command:`project()` command stores the version number and its components
+in 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`
+
+Variables corresponding to unspecified versions are set to the empty string
+(if policy :policy:`CMP0048` is set to ``NEW``).
+
+If optional ``DESCRIPTION`` is given, then additional :variable:`PROJECT_DESCRIPTION`
+variable will be set to its argument. The argument must be a string with short
+description of the project (only a few words).
+
+Optionally you can specify which languages your project supports.
+Example languages are ``C``, ``CXX`` (i.e.  C++), ``Fortran``, etc.
+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 a variable exists called :variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE`,
+the file pointed to by that variable will be included as the last step of the
+project command.
+
+The top-level ``CMakeLists.txt`` file for a project must contain a
+literal, direct call to the :command:`project` command; loading one
+through the :command:`include` command is not sufficient.  If no such
+call exists CMake will implicitly add one to the top that enables the
+default languages (``C`` and ``CXX``).
+
+.. note::
+  Call the :command:`cmake_minimum_required` command at the beginning
+  of the top-level ``CMakeLists.txt`` file even before calling the
+  ``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`.
diff --git a/share/cmake-3.6/Help/command/qt_wrap_cpp.rst b/share/cmake-3.10/Help/command/qt_wrap_cpp.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/qt_wrap_cpp.rst
rename to share/cmake-3.10/Help/command/qt_wrap_cpp.rst
diff --git a/share/cmake-3.6/Help/command/qt_wrap_ui.rst b/share/cmake-3.10/Help/command/qt_wrap_ui.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/qt_wrap_ui.rst
rename to share/cmake-3.10/Help/command/qt_wrap_ui.rst
diff --git a/share/cmake-3.6/Help/command/remove.rst b/share/cmake-3.10/Help/command/remove.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/remove.rst
rename to share/cmake-3.10/Help/command/remove.rst
diff --git a/share/cmake-3.6/Help/command/remove_definitions.rst b/share/cmake-3.10/Help/command/remove_definitions.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/remove_definitions.rst
rename to share/cmake-3.10/Help/command/remove_definitions.rst
diff --git a/share/cmake-3.6/Help/command/return.rst b/share/cmake-3.10/Help/command/return.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/return.rst
rename to share/cmake-3.10/Help/command/return.rst
diff --git a/share/cmake-3.10/Help/command/separate_arguments.rst b/share/cmake-3.10/Help/command/separate_arguments.rst
new file mode 100644
index 0000000..47982a5
--- /dev/null
+++ b/share/cmake-3.10/Help/command/separate_arguments.rst
@@ -0,0 +1,36 @@
+separate_arguments
+------------------
+
+Parse space-separated arguments into a semicolon-separated list.
+
+::
+
+  separate_arguments(<var> <NATIVE|UNIX|WINDOWS>_COMMAND "<args>")
+
+Parses a UNIX- or Windows-style command-line string "<args>" and
+stores a semicolon-separated list of the arguments in ``<var>``.  The
+entire command line must be given in one "<args>" argument.
+
+The ``UNIX_COMMAND`` mode separates arguments by unquoted whitespace.  It
+recognizes both single-quote and double-quote pairs.  A backslash
+escapes the next literal character (``\"`` is ``"``); there are no special
+escapes (``\n`` is just ``n``).
+
+The ``WINDOWS_COMMAND`` mode parses a Windows command-line 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.
+
+The ``NATIVE_COMMAND`` mode parses a Windows command-line if the host
+system is Windows, and a UNIX command-line otherwise.
+
+.. _`Parsing C Command-Line Arguments`: https://msdn.microsoft.com/library/a1y7w461.aspx
+
+::
+
+  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.10/Help/command/set.rst b/share/cmake-3.10/Help/command/set.rst
new file mode 100644
index 0000000..b24ebef
--- /dev/null
+++ b/share/cmake-3.10/Help/command/set.rst
@@ -0,0 +1,91 @@
+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:`;-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
+^^^^^^^^^^^^^^^^^^^
+
+::
+
+  set(<variable> <value>... [PARENT_SCOPE])
+
+Set 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
+^^^^^^^^^^^^^^^
+
+::
+
+  set(<variable> <value>... CACHE <type> <docstring> [FORCE])
+
+Set 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
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+::
+
+  set(ENV{<variable>} <value>...)
+
+Set the current process environment ``<variable>`` to the given value.
diff --git a/share/cmake-3.6/Help/command/set_directory_properties.rst b/share/cmake-3.10/Help/command/set_directory_properties.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/set_directory_properties.rst
rename to share/cmake-3.10/Help/command/set_directory_properties.rst
diff --git a/share/cmake-3.6/Help/command/set_property.rst b/share/cmake-3.10/Help/command/set_property.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/set_property.rst
rename to share/cmake-3.10/Help/command/set_property.rst
diff --git a/share/cmake-3.6/Help/command/set_source_files_properties.rst b/share/cmake-3.10/Help/command/set_source_files_properties.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/set_source_files_properties.rst
rename to share/cmake-3.10/Help/command/set_source_files_properties.rst
diff --git a/share/cmake-3.6/Help/command/set_target_properties.rst b/share/cmake-3.10/Help/command/set_target_properties.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/set_target_properties.rst
rename to share/cmake-3.10/Help/command/set_target_properties.rst
diff --git a/share/cmake-3.6/Help/command/set_tests_properties.rst b/share/cmake-3.10/Help/command/set_tests_properties.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/set_tests_properties.rst
rename to share/cmake-3.10/Help/command/set_tests_properties.rst
diff --git a/share/cmake-3.6/Help/command/site_name.rst b/share/cmake-3.10/Help/command/site_name.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/site_name.rst
rename to share/cmake-3.10/Help/command/site_name.rst
diff --git a/share/cmake-3.10/Help/command/source_group.rst b/share/cmake-3.10/Help/command/source_group.rst
new file mode 100644
index 0000000..938ca40
--- /dev/null
+++ b/share/cmake-3.10/Help/command/source_group.rst
@@ -0,0 +1,58 @@
+source_group
+------------
+
+Define a grouping for source files in IDE project generation.
+There are two different signatures to create source groups.
+
+::
+
+  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 backslashes
+to specify subgroups:
+
+.. code-block:: cmake
+
+  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.10/Help/command/string.rst b/share/cmake-3.10/Help/command/string.rst
new file mode 100644
index 0000000..fb3893f
--- /dev/null
+++ b/share/cmake-3.10/Help/command/string.rst
@@ -0,0 +1,378 @@
+string
+------
+
+.. only:: html
+
+   .. contents::
+
+String operations.
+
+Search and Replace
+^^^^^^^^^^^^^^^^^^
+
+FIND
+""""
+
+::
+
+  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.
+
+REPLACE
+"""""""
+
+::
+
+  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.
+
+Regular Expressions
+^^^^^^^^^^^^^^^^^^^
+
+REGEX MATCH
+"""""""""""
+
+::
+
+  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.
+
+REGEX MATCHALL
+""""""""""""""
+
+::
+
+  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
+"""""""""""""
+
+::
+
+  string(REGEX REPLACE <regular_expression>
+         <replace_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 replace expression may refer to paren-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
+``[ ]``
+  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``.
+
+Manipulation
+^^^^^^^^^^^^
+
+APPEND
+""""""
+
+::
+
+  string(APPEND <string variable> [<input>...])
+
+Append all the input arguments to the string.
+
+PREPEND
+"""""""
+
+::
+
+  string(PREPEND <string variable> [<input>...])
+
+Prepend all the input arguments to the string.
+
+CONCAT
+""""""
+
+::
+
+  string(CONCAT <output variable> [<input>...])
+
+Concatenate all the input arguments together and store
+the result in the named output variable.
+
+TOLOWER
+"""""""
+
+::
+
+  string(TOLOWER <string1> <output variable>)
+
+Convert string to lower characters.
+
+TOUPPER
+"""""""
+
+::
+
+  string(TOUPPER <string1> <output variable>)
+
+Convert string to upper characters.
+
+LENGTH
+""""""
+
+::
+
+  string(LENGTH <string> <output variable>)
+
+Store in an output variable a given string's length.
+
+SUBSTRING
+"""""""""
+
+::
+
+  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 end of string is used instead.
+
+.. note::
+  CMake 3.1 and below reported an error if length pointed past
+  the end of string.
+
+STRIP
+"""""
+
+::
+
+  string(STRIP <string> <output variable>)
+
+Store in an output variable a substring of a given string with leading and
+trailing spaces removed.
+
+GENEX_STRIP
+"""""""""""
+
+::
+
+  string(GENEX_STRIP <input string> <output variable>)
+
+Strip any :manual:`generator expressions <cmake-generator-expressions(7)>`
+from the ``input string`` and store the result in the ``output variable``.
+
+Comparison
+^^^^^^^^^^
+
+::
+
+  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
+^^^^^^^
+
+::
+
+  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
+"""""
+
+::
+
+  string(ASCII <number> [<number> ...] <output variable>)
+
+Convert all numbers into corresponding ASCII characters.
+
+CONFIGURE
+"""""""""
+
+::
+
+  string(CONFIGURE <string1> <output variable>
+         [@ONLY] [ESCAPE_QUOTES])
+
+Transform a string like :command:`configure_file` transforms a file.
+
+RANDOM
+""""""
+
+::
+
+  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
+"""""""""
+
+::
+
+  string(TIMESTAMP <output variable> [<format string>] [UTC])
+
+Write a string representation of the current date
+and/or time to the output variable.
+
+Should the command be 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.
+
+
+::
+
+  string(MAKE_C_IDENTIFIER <input string> <output variable>)
+
+Write a string which can be used as an identifier in C.
+
+.. 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
+""""
+
+::
+
+  string(UUID <output variable> NAMESPACE <namespace> NAME <name>
+         TYPE <MD5|SHA1> [UPPER])
+
+Create a univerally 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.6/Help/command/subdir_depends.rst b/share/cmake-3.10/Help/command/subdir_depends.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/subdir_depends.rst
rename to share/cmake-3.10/Help/command/subdir_depends.rst
diff --git a/share/cmake-3.6/Help/command/subdirs.rst b/share/cmake-3.10/Help/command/subdirs.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/subdirs.rst
rename to share/cmake-3.10/Help/command/subdirs.rst
diff --git a/share/cmake-3.6/Help/command/target_compile_definitions.rst b/share/cmake-3.10/Help/command/target_compile_definitions.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/target_compile_definitions.rst
rename to share/cmake-3.10/Help/command/target_compile_definitions.rst
diff --git a/share/cmake-3.6/Help/command/target_compile_features.rst b/share/cmake-3.10/Help/command/target_compile_features.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/target_compile_features.rst
rename to share/cmake-3.10/Help/command/target_compile_features.rst
diff --git a/share/cmake-3.6/Help/command/target_compile_options.rst b/share/cmake-3.10/Help/command/target_compile_options.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/target_compile_options.rst
rename to share/cmake-3.10/Help/command/target_compile_options.rst
diff --git a/share/cmake-3.6/Help/command/target_include_directories.rst b/share/cmake-3.10/Help/command/target_include_directories.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/target_include_directories.rst
rename to share/cmake-3.10/Help/command/target_include_directories.rst
diff --git a/share/cmake-3.10/Help/command/target_link_libraries.rst b/share/cmake-3.10/Help/command/target_link_libraries.rst
new file mode 100644
index 0000000..30d69f2
--- /dev/null
+++ b/share/cmake-3.10/Help/command/target_link_libraries.rst
@@ -0,0 +1,215 @@
+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::
+
+  target_link_libraries(<target> ... <item>... ...)
+
+The named ``<target>`` must have been created in the current directory by
+a command such as :command:`add_executable` or :command:`add_library`.
+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``).
+
+* **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 Mac OSX 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.
+
+* **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``).
+
+* **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_FLAGS` target property to add link
+  flags explicitly. The flags will then be placed at the toolchain-defined
+  flag position in the link command.
+
+* 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>`.
+
+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`.
+
+Arguments to ``target_link_libraries`` may use "generator expressions"
+with the syntax ``$<...>``.  Note however, that generator expressions
+will not be used in OLD handling of :policy:`CMP0003` or :policy:`CMP0004`.
+See the :manual:`cmake-generator-expressions(7)` manual for available
+expressions.  See the :manual:`cmake-buildsystem(7)` manual for more on
+defining buildsystem properties.
+
+Libraries for a Target and/or its Dependents
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+::
+
+  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
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+::
+
+  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)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+::
+
+  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)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+::
+
+  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``.
+
+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.6/Help/command/target_sources.rst b/share/cmake-3.10/Help/command/target_sources.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/target_sources.rst
rename to share/cmake-3.10/Help/command/target_sources.rst
diff --git a/share/cmake-3.10/Help/command/try_compile.rst b/share/cmake-3.10/Help/command/try_compile.rst
new file mode 100644
index 0000000..66ea3d7
--- /dev/null
+++ b/share/cmake-3.10/Help/command/try_compile.rst
@@ -0,0 +1,155 @@
+try_compile
+-----------
+
+.. only:: html
+
+   .. contents::
+
+Try building some code.
+
+Try Compiling Whole Projects
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+::
+
+  try_compile(RESULT_VAR <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 ``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
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+::
+
+  try_compile(RESULT_VAR <bindir> <srcfile|SOURCES srcfile...>
+              [CMAKE_FLAGS <flags>...]
+              [COMPILE_DEFINITIONS <defs>...]
+              [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 from one or more source files.  The success or
+failure of the ``try_compile``, i.e. ``TRUE`` or ``FALSE`` respectively, is
+returned in ``RESULT_VAR``.
+
+In this form the user need only supply one or more source files that include a
+definition for ``main``.  CMake will create a ``CMakeLists.txt`` file to build
+the source(s) as an executable that looks something like this::
+
+  add_definitions(<expanded COMPILE_DEFINITIONS from caller>)
+  include_directories(${INCLUDE_DIRECTORIES})
+  link_directories(${LINK_DIRECTORIES})
+  add_executable(cmTryCompileExec <srcfile>...)
+  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 ``add_definitions``
+  in the generated test project.
+
+``COPY_FILE <fileName>``
+  Copy the linked executable 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.
+
+``OUTPUT_VARIABLE <var>``
+  Store the output from the build process the given variable.
+
+``<LANG>_STANDARD <std>``
+  Specify the :prop_tgt:`C_STANDARD`, :prop_tgt:`CXX_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`, 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`,
+  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 RESULT_VAR)`` 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_ENABLE_EXPORTS`
+* :variable:`CMAKE_LINK_SEARCH_START_STATIC`
+* :variable:`CMAKE_LINK_SEARCH_END_STATIC`
+* :variable:`CMAKE_POSITION_INDEPENDENT_CODE`
+
+If :policy:`CMP0056` is set to ``NEW``, then
+:variable:`CMAKE_EXE_LINKER_FLAGS` is passed in as well.
+
+The current setting of :policy:`CMP0065` is set in the generated 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.
+
+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_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).
diff --git a/share/cmake-3.6/Help/command/try_run.rst b/share/cmake-3.10/Help/command/try_run.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/try_run.rst
rename to share/cmake-3.10/Help/command/try_run.rst
diff --git a/share/cmake-3.6/Help/command/unset.rst b/share/cmake-3.10/Help/command/unset.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/unset.rst
rename to share/cmake-3.10/Help/command/unset.rst
diff --git a/share/cmake-3.6/Help/command/use_mangled_mesa.rst b/share/cmake-3.10/Help/command/use_mangled_mesa.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/use_mangled_mesa.rst
rename to share/cmake-3.10/Help/command/use_mangled_mesa.rst
diff --git a/share/cmake-3.6/Help/command/utility_source.rst b/share/cmake-3.10/Help/command/utility_source.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/utility_source.rst
rename to share/cmake-3.10/Help/command/utility_source.rst
diff --git a/share/cmake-3.6/Help/command/variable_requires.rst b/share/cmake-3.10/Help/command/variable_requires.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/variable_requires.rst
rename to share/cmake-3.10/Help/command/variable_requires.rst
diff --git a/share/cmake-3.6/Help/command/variable_watch.rst b/share/cmake-3.10/Help/command/variable_watch.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/variable_watch.rst
rename to share/cmake-3.10/Help/command/variable_watch.rst
diff --git a/share/cmake-3.6/Help/command/while.rst b/share/cmake-3.10/Help/command/while.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/while.rst
rename to share/cmake-3.10/Help/command/while.rst
diff --git a/share/cmake-3.6/Help/command/write_file.rst b/share/cmake-3.10/Help/command/write_file.rst
similarity index 100%
rename from share/cmake-3.6/Help/command/write_file.rst
rename to share/cmake-3.10/Help/command/write_file.rst
diff --git a/share/cmake-3.10/Help/envvar/ASM_DIALECT.rst b/share/cmake-3.10/Help/envvar/ASM_DIALECT.rst
new file mode 100644
index 0000000..ec48f71
--- /dev/null
+++ b/share/cmake-3.10/Help/envvar/ASM_DIALECT.rst
@@ -0,0 +1,11 @@
+ASM<DIALECT>
+------------
+
+Preferred executable for compiling a specific dialect of assembly language
+files. ``ASM<DIALECT>`` can be ``ASM``, ``ASM_NASM``, ``ASM_MASM`` or
+``ASM-ATT``. 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.10/Help/envvar/ASM_DIALECTFLAGS.rst b/share/cmake-3.10/Help/envvar/ASM_DIALECTFLAGS.rst
new file mode 100644
index 0000000..4ed02fe
--- /dev/null
+++ b/share/cmake-3.10/Help/envvar/ASM_DIALECTFLAGS.rst
@@ -0,0 +1,11 @@
+ASM<DIALECT>FLAGS
+-----------------
+
+Default compilation flags to be used when compiling a specific dialect of an
+assembly language. ``ASM<DIALECT>FLAGS`` can be ``ASMFLAGS``, ``ASM_NASMFLAGS``,
+``ASM_MASMFLAGS`` or ``ASM-ATTFLAGS``. Will only be used by CMake on the
+first configuration to determine ``ASM<DIALECT>`` default compilation flags, after
+which the value for ``ASM<DIALECT>FLAGS`` is stored in the cache as
+:variable:`CMAKE_ASM<DIALECT>_FLAGS <CMAKE_<LANG>_FLAGS>`. For any configuration
+run (including the first), the environment variable will be ignored if the
+:variable:`CMAKE_ASM<DIALECT>_FLAGS <CMAKE_<LANG>_FLAGS>` variable is defined.
diff --git a/share/cmake-3.10/Help/envvar/CC.rst b/share/cmake-3.10/Help/envvar/CC.rst
new file mode 100644
index 0000000..7e68110
--- /dev/null
+++ b/share/cmake-3.10/Help/envvar/CC.rst
@@ -0,0 +1,9 @@
+CC
+--
+
+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.10/Help/envvar/CFLAGS.rst b/share/cmake-3.10/Help/envvar/CFLAGS.rst
new file mode 100644
index 0000000..60b2cd3
--- /dev/null
+++ b/share/cmake-3.10/Help/envvar/CFLAGS.rst
@@ -0,0 +1,9 @@
+CFLAGS
+------
+
+Default compilation flags to be used when compiling ``C`` files. Will only be
+used by CMake on the first configuration to determine ``CC`` default compilation
+flags, after which the value for ``CFLAGS`` is stored in the cache
+as :variable:`CMAKE_C_FLAGS <CMAKE_<LANG>_FLAGS>`. For any configuration run
+(including the first), the environment variable will be ignored if the
+:variable:`CMAKE_C_FLAGS <CMAKE_<LANG>_FLAGS>` variable is defined.
diff --git a/share/cmake-3.10/Help/envvar/CMAKE_CONFIG_TYPE.rst b/share/cmake-3.10/Help/envvar/CMAKE_CONFIG_TYPE.rst
new file mode 100644
index 0000000..1306b47
--- /dev/null
+++ b/share/cmake-3.10/Help/envvar/CMAKE_CONFIG_TYPE.rst
@@ -0,0 +1,5 @@
+CMAKE_CONFIG_TYPE
+-----------------
+
+The default build configuration for :ref:`Build Tool Mode` and
+``ctest`` build handler when there is no explicit configuration given.
diff --git a/share/cmake-3.10/Help/envvar/CMAKE_MSVCIDE_RUN_PATH.rst b/share/cmake-3.10/Help/envvar/CMAKE_MSVCIDE_RUN_PATH.rst
new file mode 100644
index 0000000..54d5f9e
--- /dev/null
+++ b/share/cmake-3.10/Help/envvar/CMAKE_MSVCIDE_RUN_PATH.rst
@@ -0,0 +1,8 @@
+CMAKE_MSVCIDE_RUN_PATH
+----------------------
+
+Extra PATH locations for custom commands when using
+:generator:`Visual Studio 9 2008` (or above) generators.
+
+The ``CMAKE_MSVCIDE_RUN_PATH`` environment variable sets the default value for
+the :variable:`CMAKE_MSVCIDE_RUN_PATH` variable if not already explicitly set.
diff --git a/share/cmake-3.10/Help/envvar/CMAKE_OSX_ARCHITECTURES.rst b/share/cmake-3.10/Help/envvar/CMAKE_OSX_ARCHITECTURES.rst
new file mode 100644
index 0000000..8bbf993
--- /dev/null
+++ b/share/cmake-3.10/Help/envvar/CMAKE_OSX_ARCHITECTURES.rst
@@ -0,0 +1,8 @@
+CMAKE_OSX_ARCHITECTURES
+-----------------------
+
+Target specific architectures for OS X.
+
+The ``CMAKE_OSX_ARCHITECTURES`` environment variable sets the default value for
+the :variable:`CMAKE_OSX_ARCHITECTURES` variable. See
+:prop_tgt:`OSX_ARCHITECTURES` for more information.
diff --git a/share/cmake-3.10/Help/envvar/CSFLAGS.rst b/share/cmake-3.10/Help/envvar/CSFLAGS.rst
new file mode 100644
index 0000000..251ddc5
--- /dev/null
+++ b/share/cmake-3.10/Help/envvar/CSFLAGS.rst
@@ -0,0 +1,9 @@
+CSFLAGS
+-------
+
+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.
diff --git a/share/cmake-3.10/Help/envvar/CTEST_INTERACTIVE_DEBUG_MODE.rst b/share/cmake-3.10/Help/envvar/CTEST_INTERACTIVE_DEBUG_MODE.rst
new file mode 100644
index 0000000..25ed14f
--- /dev/null
+++ b/share/cmake-3.10/Help/envvar/CTEST_INTERACTIVE_DEBUG_MODE.rst
@@ -0,0 +1,5 @@
+CTEST_INTERACTIVE_DEBUG_MODE
+----------------------------
+
+Environment variable that will exist and be set to ``1`` when a test executed
+by CTest is run in interactive mode.
diff --git a/share/cmake-3.10/Help/envvar/CTEST_OUTPUT_ON_FAILURE.rst b/share/cmake-3.10/Help/envvar/CTEST_OUTPUT_ON_FAILURE.rst
new file mode 100644
index 0000000..1fcf42b
--- /dev/null
+++ b/share/cmake-3.10/Help/envvar/CTEST_OUTPUT_ON_FAILURE.rst
@@ -0,0 +1,7 @@
+CTEST_OUTPUT_ON_FAILURE
+-----------------------
+
+Boolean environment variable that controls if the output should be logged for
+failed tests. Set the value to 1, True, or ON to enable output on failure.
+See :manual:`ctest(1)` for more information on controlling output of failed
+tests.
diff --git a/share/cmake-3.10/Help/envvar/CTEST_PARALLEL_LEVEL.rst b/share/cmake-3.10/Help/envvar/CTEST_PARALLEL_LEVEL.rst
new file mode 100644
index 0000000..c767a01
--- /dev/null
+++ b/share/cmake-3.10/Help/envvar/CTEST_PARALLEL_LEVEL.rst
@@ -0,0 +1,5 @@
+CTEST_PARALLEL_LEVEL
+--------------------
+
+Specify the number of tests for CTest to run in parallel. See :manual:`ctest(1)`
+for more information on parallel test execution.
diff --git a/share/cmake-3.10/Help/envvar/CTEST_USE_LAUNCHERS_DEFAULT.rst b/share/cmake-3.10/Help/envvar/CTEST_USE_LAUNCHERS_DEFAULT.rst
new file mode 100644
index 0000000..8d8eea5
--- /dev/null
+++ b/share/cmake-3.10/Help/envvar/CTEST_USE_LAUNCHERS_DEFAULT.rst
@@ -0,0 +1,4 @@
+CTEST_USE_LAUNCHERS_DEFAULT
+---------------------------
+
+Initializes the :variable:`CTEST_USE_LAUNCHERS` variable if not already defined.
diff --git a/share/cmake-3.10/Help/envvar/CUDACXX.rst b/share/cmake-3.10/Help/envvar/CUDACXX.rst
new file mode 100644
index 0000000..8a5fd4b
--- /dev/null
+++ b/share/cmake-3.10/Help/envvar/CUDACXX.rst
@@ -0,0 +1,9 @@
+CUDACXX
+-------
+
+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.10/Help/envvar/CUDAFLAGS.rst b/share/cmake-3.10/Help/envvar/CUDAFLAGS.rst
new file mode 100644
index 0000000..3dff49f
--- /dev/null
+++ b/share/cmake-3.10/Help/envvar/CUDAFLAGS.rst
@@ -0,0 +1,9 @@
+CUDAFLAGS
+---------
+
+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.
diff --git a/share/cmake-3.10/Help/envvar/CUDAHOSTCXX.rst b/share/cmake-3.10/Help/envvar/CUDAHOSTCXX.rst
new file mode 100644
index 0000000..f0f94f6
--- /dev/null
+++ b/share/cmake-3.10/Help/envvar/CUDAHOSTCXX.rst
@@ -0,0 +1,9 @@
+CUDAHOSTCXX
+-----------
+
+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.
diff --git a/share/cmake-3.10/Help/envvar/CXX.rst b/share/cmake-3.10/Help/envvar/CXX.rst
new file mode 100644
index 0000000..3b1e445
--- /dev/null
+++ b/share/cmake-3.10/Help/envvar/CXX.rst
@@ -0,0 +1,9 @@
+CXX
+---
+
+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.10/Help/envvar/CXXFLAGS.rst b/share/cmake-3.10/Help/envvar/CXXFLAGS.rst
new file mode 100644
index 0000000..8b58abd
--- /dev/null
+++ b/share/cmake-3.10/Help/envvar/CXXFLAGS.rst
@@ -0,0 +1,9 @@
+CXXFLAGS
+--------
+
+Default compilation flags to be used when compiling ``CXX`` (C++) files. Will
+only be used by CMake on the first configuration to determine ``CXX`` default
+compilation flags, after which the value for ``CXXFLAGS`` is stored in the cache
+as :variable:`CMAKE_CXX_FLAGS <CMAKE_<LANG>_FLAGS>`. For any configuration run (
+including the first), the environment variable will be ignored if
+the :variable:`CMAKE_CXX_FLAGS <CMAKE_<LANG>_FLAGS>` variable is defined.
diff --git a/share/cmake-3.10/Help/envvar/DASHBOARD_TEST_FROM_CTEST.rst b/share/cmake-3.10/Help/envvar/DASHBOARD_TEST_FROM_CTEST.rst
new file mode 100644
index 0000000..fab1c0c
--- /dev/null
+++ b/share/cmake-3.10/Help/envvar/DASHBOARD_TEST_FROM_CTEST.rst
@@ -0,0 +1,5 @@
+DASHBOARD_TEST_FROM_CTEST
+-------------------------
+
+Environment variable that will exist when a test executed by CTest is run
+in non-interactive mode. The value will be equal to :variable:`CMAKE_VERSION`.
diff --git a/share/cmake-3.10/Help/envvar/FC.rst b/share/cmake-3.10/Help/envvar/FC.rst
new file mode 100644
index 0000000..7d293fd
--- /dev/null
+++ b/share/cmake-3.10/Help/envvar/FC.rst
@@ -0,0 +1,10 @@
+FC
+--
+
+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.10/Help/envvar/FFLAGS.rst b/share/cmake-3.10/Help/envvar/FFLAGS.rst
new file mode 100644
index 0000000..19d6169
--- /dev/null
+++ b/share/cmake-3.10/Help/envvar/FFLAGS.rst
@@ -0,0 +1,9 @@
+FFLAGS
+------
+
+Default compilation flags to be used when compiling ``Fortran`` files. Will only
+be used by CMake on the first configuration to determine ``Fortran`` default
+compilation flags, after which the value for ``FFLAGS`` is stored in the cache
+as :variable:`CMAKE_Fortran_FLAGS <CMAKE_<LANG>_FLAGS>`. For any configuration
+run (including the first), the environment variable will be ignored if
+the :variable:`CMAKE_Fortran_FLAGS <CMAKE_<LANG>_FLAGS>` variable is defined.
diff --git a/share/cmake-3.10/Help/envvar/LDFLAGS.rst b/share/cmake-3.10/Help/envvar/LDFLAGS.rst
new file mode 100644
index 0000000..52da99c
--- /dev/null
+++ b/share/cmake-3.10/Help/envvar/LDFLAGS.rst
@@ -0,0 +1,10 @@
+LDFLAGS
+-------
+
+Will only be used by CMake on the first configuration to determine the default
+linker flags, after which the value for ``LDFLAGS`` is stored in the cache
+as :variable:`CMAKE_EXE_LINKER_FLAGS_INIT`,
+:variable:`CMAKE_SHARED_LINKER_FLAGS_INIT`, and
+:variable:`CMAKE_MODULE_LINKER_FLAGS_INIT`. For any configuration run
+(including the first), the environment variable will be ignored if the
+equivalent  ``CMAKE_<TYPE>_LINKER_FLAGS_INIT`` variable is defined.
diff --git a/share/cmake-3.10/Help/envvar/MACOSX_DEPLOYMENT_TARGET.rst b/share/cmake-3.10/Help/envvar/MACOSX_DEPLOYMENT_TARGET.rst
new file mode 100644
index 0000000..e6051b4
--- /dev/null
+++ b/share/cmake-3.10/Help/envvar/MACOSX_DEPLOYMENT_TARGET.rst
@@ -0,0 +1,8 @@
+MACOSX_DEPLOYMENT_TARGET
+------------------------
+
+Specify the minimum version of OS X on which the target binaries are
+to be deployed.
+
+The ``MACOSX_DEPLOYMENT_TARGET`` environment variable sets the default value for
+the :variable:`CMAKE_OSX_DEPLOYMENT_TARGET` variable.
diff --git a/share/cmake-3.10/Help/envvar/RC.rst b/share/cmake-3.10/Help/envvar/RC.rst
new file mode 100644
index 0000000..6c2db19
--- /dev/null
+++ b/share/cmake-3.10/Help/envvar/RC.rst
@@ -0,0 +1,9 @@
+RC
+--
+
+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.10/Help/envvar/RCFLAGS.rst b/share/cmake-3.10/Help/envvar/RCFLAGS.rst
new file mode 100644
index 0000000..4f2f31c
--- /dev/null
+++ b/share/cmake-3.10/Help/envvar/RCFLAGS.rst
@@ -0,0 +1,9 @@
+RCFLAGS
+-------
+
+Default compilation flags to be used when compiling ``resource`` files. Will
+only be used by CMake on the first configuration to determine ``resource``
+default compilation flags, after which the value for ``RCFLAGS`` is stored in
+the cache as :variable:`CMAKE_RC_FLAGS <CMAKE_<LANG>_FLAGS>`. For any
+configuration run (including the first), the environment variable will be ignored
+if the :variable:`CMAKE_RC_FLAGS <CMAKE_<LANG>_FLAGS>` variable is defined.
diff --git a/share/cmake-3.6/Help/generator/Borland Makefiles.rst b/share/cmake-3.10/Help/generator/Borland Makefiles.rst
similarity index 100%
rename from share/cmake-3.6/Help/generator/Borland Makefiles.rst
rename to share/cmake-3.10/Help/generator/Borland Makefiles.rst
diff --git a/share/cmake-3.10/Help/generator/CodeBlocks.rst b/share/cmake-3.10/Help/generator/CodeBlocks.rst
new file mode 100644
index 0000000..06cc746
--- /dev/null
+++ b/share/cmake-3.10/Help/generator/CodeBlocks.rst
@@ -0,0 +1,32 @@
+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 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 make target.  A "make 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.10/Help/generator/CodeLite.rst b/share/cmake-3.10/Help/generator/CodeLite.rst
new file mode 100644
index 0000000..3e60aa6
--- /dev/null
+++ b/share/cmake-3.10/Help/generator/CodeLite.rst
@@ -0,0 +1,28 @@
+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 behaviour from projects to targets as the basis
+for project files.
+The appropriate make program can build the
+project through the default make target.  A "make 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.6/Help/generator/Eclipse CDT4.rst b/share/cmake-3.10/Help/generator/Eclipse CDT4.rst
similarity index 100%
rename from share/cmake-3.6/Help/generator/Eclipse CDT4.rst
rename to share/cmake-3.10/Help/generator/Eclipse CDT4.rst
diff --git a/share/cmake-3.6/Help/generator/Green Hills MULTI.rst b/share/cmake-3.10/Help/generator/Green Hills MULTI.rst
similarity index 100%
rename from share/cmake-3.6/Help/generator/Green Hills MULTI.rst
rename to share/cmake-3.10/Help/generator/Green Hills MULTI.rst
diff --git a/share/cmake-3.6/Help/generator/KDevelop3.rst b/share/cmake-3.10/Help/generator/KDevelop3.rst
similarity index 100%
rename from share/cmake-3.6/Help/generator/KDevelop3.rst
rename to share/cmake-3.10/Help/generator/KDevelop3.rst
diff --git a/share/cmake-3.6/Help/generator/Kate.rst b/share/cmake-3.10/Help/generator/Kate.rst
similarity index 100%
rename from share/cmake-3.6/Help/generator/Kate.rst
rename to share/cmake-3.10/Help/generator/Kate.rst
diff --git a/share/cmake-3.6/Help/generator/MSYS Makefiles.rst b/share/cmake-3.10/Help/generator/MSYS Makefiles.rst
similarity index 100%
rename from share/cmake-3.6/Help/generator/MSYS Makefiles.rst
rename to share/cmake-3.10/Help/generator/MSYS Makefiles.rst
diff --git a/share/cmake-3.6/Help/generator/MinGW Makefiles.rst b/share/cmake-3.10/Help/generator/MinGW Makefiles.rst
similarity index 100%
rename from share/cmake-3.6/Help/generator/MinGW Makefiles.rst
rename to share/cmake-3.10/Help/generator/MinGW Makefiles.rst
diff --git a/share/cmake-3.6/Help/generator/NMake Makefiles JOM.rst b/share/cmake-3.10/Help/generator/NMake Makefiles JOM.rst
similarity index 100%
rename from share/cmake-3.6/Help/generator/NMake Makefiles JOM.rst
rename to share/cmake-3.10/Help/generator/NMake Makefiles JOM.rst
diff --git a/share/cmake-3.6/Help/generator/NMake Makefiles.rst b/share/cmake-3.10/Help/generator/NMake Makefiles.rst
similarity index 100%
rename from share/cmake-3.6/Help/generator/NMake Makefiles.rst
rename to share/cmake-3.10/Help/generator/NMake Makefiles.rst
diff --git a/share/cmake-3.10/Help/generator/Ninja.rst b/share/cmake-3.10/Help/generator/Ninja.rst
new file mode 100644
index 0000000..3bbd9dc
--- /dev/null
+++ b/share/cmake-3.10/Help/generator/Ninja.rst
@@ -0,0 +1,33 @@
+Ninja
+-----
+
+Generates build.ninja files.
+
+A build.ninja file is generated into the build tree.  Recent versions
+of the ninja program can build the project through the "all" target.
+An "install" target is also provided.
+
+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/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 has the required features.  As of this version of CMake the needed
+features have not been integrated into upstream Ninja.  Kitware maintains
+a branch of Ninja with the required features on `github.com/Kitware/ninja`_.
+
+.. _`github.com/Kitware/ninja`: https://github.com/Kitware/ninja/tree/features-for-fortran#readme
diff --git a/share/cmake-3.6/Help/generator/Sublime Text 2.rst b/share/cmake-3.10/Help/generator/Sublime Text 2.rst
similarity index 100%
rename from share/cmake-3.6/Help/generator/Sublime Text 2.rst
rename to share/cmake-3.10/Help/generator/Sublime Text 2.rst
diff --git a/share/cmake-3.6/Help/generator/Unix Makefiles.rst b/share/cmake-3.10/Help/generator/Unix Makefiles.rst
similarity index 100%
rename from share/cmake-3.6/Help/generator/Unix Makefiles.rst
rename to share/cmake-3.10/Help/generator/Unix Makefiles.rst
diff --git a/share/cmake-3.10/Help/generator/VS_TOOLSET_HOST_ARCH.txt b/share/cmake-3.10/Help/generator/VS_TOOLSET_HOST_ARCH.txt
new file mode 100644
index 0000000..5d13e77
--- /dev/null
+++ b/share/cmake-3.10/Help/generator/VS_TOOLSET_HOST_ARCH.txt
@@ -0,0 +1,6 @@
+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).  By default Visual Studio
+chooses the 32-bit variant even on a 64-bit host.  One may request use of the
+64-bit host tools by adding a ``host=x64`` option to the toolset specification.
+See the :variable:`CMAKE_GENERATOR_TOOLSET` variable for details.
diff --git a/share/cmake-3.10/Help/generator/Visual Studio 10 2010.rst b/share/cmake-3.10/Help/generator/Visual Studio 10 2010.rst
new file mode 100644
index 0000000..04eef10
--- /dev/null
+++ b/share/cmake-3.10/Help/generator/Visual Studio 10 2010.rst
@@ -0,0 +1,26 @@
+Visual Studio 10 2010
+---------------------
+
+Generates Visual Studio 10 (VS 2010) project files.
+
+The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set
+to specify a target platform name (architecture).
+
+For compatibility with CMake versions prior to 3.1, one may specify
+a target platform name optionally at the end of this generator name:
+
+``Visual Studio 10 2010 Win64``
+  Specify target platform ``x64``.
+
+``Visual Studio 10 2010 IA64``
+  Specify target platform ``Itanium``.
+
+For compatibility with CMake versions prior to 3.0, one may specify this
+generator using the name ``Visual Studio 10`` without the year component.
+
+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.10/Help/generator/Visual Studio 11 2012.rst b/share/cmake-3.10/Help/generator/Visual Studio 11 2012.rst
new file mode 100644
index 0000000..347a153
--- /dev/null
+++ b/share/cmake-3.10/Help/generator/Visual Studio 11 2012.rst
@@ -0,0 +1,29 @@
+Visual Studio 11 2012
+---------------------
+
+Generates Visual Studio 11 (VS 2012) project files.
+
+The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set
+to specify a target platform name (architecture).
+
+For compatibility with CMake versions prior to 3.1, one may specify
+a target platform name optionally at the end of this generator name:
+
+``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.
+
+For compatibility with CMake versions prior to 3.0, one may specify this
+generator using the name "Visual Studio 11" without the year component.
+
+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.10/Help/generator/Visual Studio 12 2013.rst b/share/cmake-3.10/Help/generator/Visual Studio 12 2013.rst
new file mode 100644
index 0000000..5071b20
--- /dev/null
+++ b/share/cmake-3.10/Help/generator/Visual Studio 12 2013.rst
@@ -0,0 +1,28 @@
+Visual Studio 12 2013
+---------------------
+
+Generates Visual Studio 12 (VS 2013) project files.
+
+The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set
+to specify a target platform name (architecture).
+
+For compatibility with CMake versions prior to 3.1, one may specify
+a target platform name optionally at the end of this generator name:
+
+``Visual Studio 12 2013 Win64``
+  Specify target platform ``x64``.
+
+``Visual Studio 12 2013 ARM``
+  Specify target platform ``ARM``.
+
+For compatibility with CMake versions prior to 3.0, one may specify this
+generator using the name "Visual Studio 12" without the year component.
+
+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.
+
+.. include:: VS_TOOLSET_HOST_ARCH.txt
diff --git a/share/cmake-3.10/Help/generator/Visual Studio 14 2015.rst b/share/cmake-3.10/Help/generator/Visual Studio 14 2015.rst
new file mode 100644
index 0000000..64254b5
--- /dev/null
+++ b/share/cmake-3.10/Help/generator/Visual Studio 14 2015.rst
@@ -0,0 +1,25 @@
+Visual Studio 14 2015
+---------------------
+
+Generates Visual Studio 14 (VS 2015) project files.
+
+The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set
+to specify a target platform name (architecture).
+
+For compatibility with CMake versions prior to 3.1, one may specify
+a target platform name optionally at the end of this generator name:
+
+``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.
+
+.. include:: VS_TOOLSET_HOST_ARCH.txt
diff --git a/share/cmake-3.10/Help/generator/Visual Studio 15 2017.rst b/share/cmake-3.10/Help/generator/Visual Studio 15 2017.rst
new file mode 100644
index 0000000..2ac0449
--- /dev/null
+++ b/share/cmake-3.10/Help/generator/Visual Studio 15 2017.rst
@@ -0,0 +1,37 @@
+Visual Studio 15 2017
+---------------------
+
+Generates Visual Studio 15 (VS 2017) project files.
+
+The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set
+to specify a target platform name (architecture).
+
+For compatibility with CMake versions prior to 3.1, one may specify
+a target platform name optionally at the end of this generator name:
+
+``Visual Studio 15 2017 Win64``
+  Specify target platform ``x64``.
+
+``Visual Studio 15 2017 ARM``
+  Specify target platform ``ARM``.
+
+Instance Selection
+^^^^^^^^^^^^^^^^^^
+
+VS 2017 supports multiple installations on the same machine.
+CMake queries the Visual Studio Installer to locate VS instances.
+If more than one instance is installed we do not define which one
+is chosen by default.  If the ``VS150COMNTOOLS`` environment variable
+is set and points to the ``Common7/Tools`` directory within one of
+the instances, that instance will be used.  The environment variable
+must remain consistently set whenever CMake is re-run within a given
+build tree.
+
+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.
+
+.. include:: VS_TOOLSET_HOST_ARCH.txt
diff --git a/share/cmake-3.6/Help/generator/Visual Studio 6.rst b/share/cmake-3.10/Help/generator/Visual Studio 6.rst
similarity index 100%
rename from share/cmake-3.6/Help/generator/Visual Studio 6.rst
rename to share/cmake-3.10/Help/generator/Visual Studio 6.rst
diff --git a/share/cmake-3.10/Help/generator/Visual Studio 7 .NET 2003.rst b/share/cmake-3.10/Help/generator/Visual Studio 7 .NET 2003.rst
new file mode 100644
index 0000000..d4c7869
--- /dev/null
+++ b/share/cmake-3.10/Help/generator/Visual Studio 7 .NET 2003.rst
@@ -0,0 +1,6 @@
+Visual Studio 7 .NET 2003
+-------------------------
+
+Removed.  This once generated Visual Studio .NET 2003 project files, but
+the generator has been removed since CMake 3.9.  It is still possible to
+build with VS 7.1 tools using the :generator:`NMake Makefiles` generator.
diff --git a/share/cmake-3.6/Help/generator/Visual Studio 7.rst b/share/cmake-3.10/Help/generator/Visual Studio 7.rst
similarity index 100%
rename from share/cmake-3.6/Help/generator/Visual Studio 7.rst
rename to share/cmake-3.10/Help/generator/Visual Studio 7.rst
diff --git a/share/cmake-3.10/Help/generator/Visual Studio 8 2005.rst b/share/cmake-3.10/Help/generator/Visual Studio 8 2005.rst
new file mode 100644
index 0000000..acbbf01
--- /dev/null
+++ b/share/cmake-3.10/Help/generator/Visual Studio 8 2005.rst
@@ -0,0 +1,23 @@
+Visual Studio 8 2005
+--------------------
+
+Deprecated.  Generates Visual Studio 8 2005 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 8 2005 tools
+  using the :generator:`Visual Studio 10 2010` (or above) generator
+  with :variable:`CMAKE_GENERATOR_TOOLSET` set to ``v80``, or by
+  using the :generator:`NMake Makefiles` generator.
+
+The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set
+to specify a target platform name.
+
+For compatibility with CMake versions prior to 3.1, one may specify
+a target platform name optionally at the end of this generator name:
+
+``Visual Studio 8 2005 Win64``
+  Specify target platform ``x64``.
+
+``Visual Studio 8 2005 <WinCE-SDK>``
+  Specify target platform matching a Windows CE SDK name.
diff --git a/share/cmake-3.6/Help/generator/Visual Studio 9 2008.rst b/share/cmake-3.10/Help/generator/Visual Studio 9 2008.rst
similarity index 100%
rename from share/cmake-3.6/Help/generator/Visual Studio 9 2008.rst
rename to share/cmake-3.10/Help/generator/Visual Studio 9 2008.rst
diff --git a/share/cmake-3.6/Help/generator/Watcom WMake.rst b/share/cmake-3.10/Help/generator/Watcom WMake.rst
similarity index 100%
rename from share/cmake-3.6/Help/generator/Watcom WMake.rst
rename to share/cmake-3.10/Help/generator/Watcom WMake.rst
diff --git a/share/cmake-3.10/Help/generator/Xcode.rst b/share/cmake-3.10/Help/generator/Xcode.rst
new file mode 100644
index 0000000..968c26a
--- /dev/null
+++ b/share/cmake-3.10/Help/generator/Xcode.rst
@@ -0,0 +1,13 @@
+Xcode
+-----
+
+Generate Xcode project files.
+
+This supports Xcode 3.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.6/Help/include/COMPILE_DEFINITIONS_DISCLAIMER.txt b/share/cmake-3.10/Help/include/COMPILE_DEFINITIONS_DISCLAIMER.txt
similarity index 100%
rename from share/cmake-3.6/Help/include/COMPILE_DEFINITIONS_DISCLAIMER.txt
rename to share/cmake-3.10/Help/include/COMPILE_DEFINITIONS_DISCLAIMER.txt
diff --git a/share/cmake-3.6/Help/include/INTERFACE_INCLUDE_DIRECTORIES_WARNING.txt b/share/cmake-3.10/Help/include/INTERFACE_INCLUDE_DIRECTORIES_WARNING.txt
similarity index 100%
rename from share/cmake-3.6/Help/include/INTERFACE_INCLUDE_DIRECTORIES_WARNING.txt
rename to share/cmake-3.10/Help/include/INTERFACE_INCLUDE_DIRECTORIES_WARNING.txt
diff --git a/share/cmake-3.6/Help/include/INTERFACE_LINK_LIBRARIES_WARNING.txt b/share/cmake-3.10/Help/include/INTERFACE_LINK_LIBRARIES_WARNING.txt
similarity index 100%
rename from share/cmake-3.6/Help/include/INTERFACE_LINK_LIBRARIES_WARNING.txt
rename to share/cmake-3.10/Help/include/INTERFACE_LINK_LIBRARIES_WARNING.txt
diff --git a/share/cmake-3.10/Help/index.rst b/share/cmake-3.10/Help/index.rst
new file mode 100644
index 0000000..3dccdda
--- /dev/null
+++ b/share/cmake-3.10/Help/index.rst
@@ -0,0 +1,61 @@
+.. title:: CMake Reference Documentation
+
+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-generator-expressions.7
+   /manual/cmake-generators.7
+   /manual/cmake-language.7
+   /manual/cmake-server.7
+   /manual/cmake-modules.7
+   /manual/cmake-packages.7
+   /manual/cmake-policies.7
+   /manual/cmake-properties.7
+   /manual/cmake-qt.7
+   /manual/cmake-toolchains.7
+   /manual/cmake-variables.7
+   /manual/cmake-env-variables.7
+
+.. 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.6/Help/manual/LINKS.txt b/share/cmake-3.10/Help/manual/LINKS.txt
similarity index 100%
rename from share/cmake-3.6/Help/manual/LINKS.txt
rename to share/cmake-3.10/Help/manual/LINKS.txt
diff --git a/share/cmake-3.10/Help/manual/OPTIONS_BUILD.txt b/share/cmake-3.10/Help/manual/OPTIONS_BUILD.txt
new file mode 100644
index 0000000..e8b87c9
--- /dev/null
+++ b/share/cmake-3.10/Help/manual/OPTIONS_BUILD.txt
@@ -0,0 +1,112 @@
+``-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 SET commands that use the CACHE option, not a
+ cache-format file.
+
+``-D <var>:<type>=<value>, -D <var>=<value>``
+ Create 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.
+
+``-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.6/Help/manual/OPTIONS_HELP.txt b/share/cmake-3.10/Help/manual/OPTIONS_HELP.txt
similarity index 100%
rename from share/cmake-3.6/Help/manual/OPTIONS_HELP.txt
rename to share/cmake-3.10/Help/manual/OPTIONS_HELP.txt
diff --git a/share/cmake-3.6/Help/manual/ccmake.1.rst b/share/cmake-3.10/Help/manual/ccmake.1.rst
similarity index 100%
rename from share/cmake-3.6/Help/manual/ccmake.1.rst
rename to share/cmake-3.10/Help/manual/ccmake.1.rst
diff --git a/share/cmake-3.10/Help/manual/cmake-buildsystem.7.rst b/share/cmake-3.10/Help/manual/cmake-buildsystem.7.rst
new file mode 100644
index 0000000..ae538ed
--- /dev/null
+++ b/share/cmake-3.10/Help/manual/cmake-buildsystem.7.rst
@@ -0,0 +1,997 @@
+.. 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 prefixes, suffixes 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 OS X 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 is also not linked to. It defines a non-archival
+collection of object files resulting from compiling the given source files.
+The object files collection can 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)
+
+``OBJECT`` libraries may not be used in the right hand side of
+:command:`target_link_libraries`.  They also may not be used as the ``TARGET``
+in a use of the :command:`add_custom_command(TARGET)` command signature.  They
+may be installed, and will be exported as an INTERFACE library.
+
+Although object libraries may not be named directly in calls to
+the :command:`target_link_libraries` command, they can be "linked"
+indirectly by using an :ref:`Interface Library <Interface Libraries>`
+whose :prop_tgt:`INTERFACE_SOURCES` target property is set to name
+``$<TARGET_OBJECTS:objlib>``.
+
+Although object libraries may not be used as the ``TARGET``
+in a use of the :command:`add_custom_command(TARGET)` command signature,
+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 ``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 ``Makefile`` based and ``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 Mac OX 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 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.
+
+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_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.  It is not possible to use an :prop_tgt:`IMPORTED` target in the
+left-hand-side of the :command:`target_compile_definitions`,
+:command:`target_include_directories`, :command:`target_compile_options` or
+:command:`target_link_libraries` commands, as that would be an attempt to
+modify it.  :prop_tgt:`IMPORTED` targets are designed to be used only in the
+right-hand-side of those commands.
+
+: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``
+* ``IMPORTED``
+* ``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.10/Help/manual/cmake-commands.7.rst b/share/cmake-3.10/Help/manual/cmake-commands.7.rst
new file mode 100644
index 0000000..f8bfb32
--- /dev/null
+++ b/share/cmake-3.10/Help/manual/cmake-commands.7.rst
@@ -0,0 +1,165 @@
+.. 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_minimum_required
+   /command/cmake_parse_arguments
+   /command/cmake_policy
+   /command/configure_file
+   /command/continue
+   /command/elseif
+   /command/else
+   /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_directory_properties
+   /command/set_property
+   /command/set
+   /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_options
+   /command/add_custom_command
+   /command/add_custom_target
+   /command/add_definitions
+   /command/add_dependencies
+   /command/add_executable
+   /command/add_library
+   /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/qt_wrap_cpp
+   /command/qt_wrap_ui
+   /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_libraries
+   /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 available only for compatibility with older
+versions of CMake.  Do not use them 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/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.10/Help/manual/cmake-compile-features.7.rst b/share/cmake-3.10/Help/manual/cmake-compile-features.7.rst
new file mode 100644
index 0000000..0124395
--- /dev/null
+++ b/share/cmake-3.10/Help/manual/cmake-compile-features.7.rst
@@ -0,0 +1,369 @@
+.. 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` 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` 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.  The are some exceptions, such as
+CMake using ``cxx_final`` and ``cxx_override`` instead of the single
+``cxx_override_control`` used by Clang.
+
+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
+aware of that standard.  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 aware of C++ 11
+or above.  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
+that is aware of C++ 11 (or above), 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 though 6.2.
+* ``Clang``: Clang compiler versions 2.9 through 3.4.
+* ``GNU``: GNU compiler versions 4.4 through 5.0.
+* ``MSVC``: Microsoft Visual Studio versions 2010 through 2017.
+* ``SunPro``: Oracle SolarisStudio versions 12.4 through 12.5.
+* ``Intel``: Intel compiler versions 12.1 through 17.0.
+
+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 through 5.0.
+
+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 through 8.5.8.
+* ``PGI``: PGI version 12.10 through 17.5.
+* ``XL``: IBM XL version 10.1 through 13.1.5.
+
+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>`
+from the following :variable:`compiler ids <CMAKE_<LANG>_COMPILER_ID>` as of the
+versions specified for each:
+
+* ``NVIDIA``: NVIDIA nvcc compiler 7.5 though 8.0.
diff --git a/share/cmake-3.10/Help/manual/cmake-developer.7.rst b/share/cmake-3.10/Help/manual/cmake-developer.7.rst
new file mode 100644
index 0000000..cd509ac
--- /dev/null
+++ b/share/cmake-3.10/Help/manual/cmake-developer.7.rst
@@ -0,0 +1,965 @@
+.. cmake-manual-description: CMake Developer Reference
+
+cmake-developer(7)
+******************
+
+.. only:: html
+
+   .. contents::
+
+Introduction
+============
+
+This manual is intended for reference by developers modifying the CMake
+source tree itself, and by those authoring externally-maintained modules.
+
+Adding Compile Features
+=======================
+
+CMake reports an error if a compiler whose features are known does not report
+support for a particular requested feature.  A compiler is considered to have
+known features if it reports support for at least one feature.
+
+When adding a new compile feature to CMake, it is therefore necessary to list
+support for the feature for all CompilerIds which already have one or more
+feature supported, if the new feature is available for any version of the
+compiler.
+
+When adding the first supported feature to a particular CompilerId, it is
+necessary to list support for all features known to cmake (See
+:variable:`CMAKE_C_COMPILE_FEATURES` and
+:variable:`CMAKE_CXX_COMPILE_FEATURES` as appropriate), where available for
+the compiler.  Ensure that the ``CMAKE_<LANG>_STANDARD_DEFAULT`` is set to
+the computed internal variable ``CMAKE_<LANG>_STANDARD_COMPUTED_DEFAULT``
+for compiler versions which should be supported.
+
+It is sensible to record the features for the most recent version of a
+particular CompilerId first, and then work backwards.  It is sensible to
+try to create a continuous range of versions of feature releases of the
+compiler.  Gaps in the range indicate incorrect features recorded for
+intermediate releases.
+
+Generally, features are made available for a particular version if the
+compiler vendor documents availability of the feature with that
+version.  Note that sometimes partially implemented features appear to
+be functional in previous releases (such as ``cxx_constexpr`` in GNU 4.6,
+though availability is documented in GNU 4.7), and sometimes compiler vendors
+document availability of features, though supporting infrastructure is
+not available (such as ``__has_feature(cxx_generic_lambdas)`` indicating
+non-availability in Clang 3.4, though it is documented as available, and
+fixed in Clang 3.5).  Similar cases for other compilers and versions
+need to be investigated when extending CMake to support them.
+
+When a vendor releases a new version of a known compiler which supports
+a previously unsupported feature, and there are already known features for
+that compiler, the feature should be listed as supported in CMake for
+that version of the compiler as soon as reasonably possible.
+
+Standard-specific/compiler-specific variables such
+``CMAKE_CXX98_COMPILE_FEATURES`` are deliberately not documented.  They
+only exist for the compiler-specific implementation of adding the ``-std``
+compile flag for compilers which need that.
+
+Help
+====
+
+The ``Help`` directory contains CMake help manual source files.
+They are written using the `reStructuredText`_ markup syntax and
+processed by `Sphinx`_ to generate the CMake help manuals.
+
+.. _`reStructuredText`: http://docutils.sourceforge.net/docs/ref/rst/introduction.html
+.. _`Sphinx`: http://sphinx-doc.org
+
+Markup Constructs
+-----------------
+
+In addition to using Sphinx to generate the CMake help manuals, we
+also use a C++-implemented document processor to print documents for
+the ``--help-*`` command-line help options.  It supports a subset of
+reStructuredText markup.  When authoring or modifying documents,
+please verify that the command-line help looks good in addition to the
+Sphinx-generated html and man pages.
+
+The command-line help processor supports the following constructs
+defined by reStructuredText, Sphinx, and a CMake extension to Sphinx.
+
+..
+ Note: This list must be kept consistent with the cmRST implementation.
+
+CMake Domain directives
+ Directives defined in the `CMake Domain`_ for defining CMake
+ documentation objects are printed in command-line help output as
+ if the lines were normal paragraph text with interpretation.
+
+CMake Domain interpreted text roles
+ Interpreted text roles defined in the `CMake Domain`_ for
+ cross-referencing CMake documentation objects are replaced by their
+ link text in command-line help output.  Other roles are printed
+ literally and not processed.
+
+``code-block`` directive
+ Add a literal code block without interpretation.  The command-line
+ help processor prints the block content without the leading directive
+ line and with common indentation replaced by one space.
+
+``include`` directive
+ Include another document source file.  The command-line help
+ processor prints the included document inline with the referencing
+ document.
+
+literal block after ``::``
+ A paragraph ending in ``::`` followed by a blank line treats
+ the following indented block as literal text without interpretation.
+ The command-line help processor prints the ``::`` literally and
+ prints the block content with common indentation replaced by one
+ space.
+
+``note`` directive
+ Call out a side note.  The command-line help processor prints the
+ block content as if the lines were normal paragraph text with
+ interpretation.
+
+``parsed-literal`` directive
+ Add a literal block with markup interpretation.  The command-line
+ help processor prints the block content without the leading
+ directive line and with common indentation replaced by one space.
+
+``productionlist`` directive
+ Render context-free grammar productions.  The command-line help
+ processor prints the block content as if the lines were normal
+ paragraph text with interpretation.
+
+``replace`` directive
+ Define a ``|substitution|`` replacement.
+ The command-line help processor requires a substitution replacement
+ to be defined before it is referenced.
+
+``|substitution|`` reference
+ Reference a substitution replacement previously defined by
+ the ``replace`` directive.  The command-line help processor
+ performs the substitution and replaces all newlines in the
+ replacement text with spaces.
+
+``toctree`` directive
+ Include other document sources in the Table-of-Contents
+ document tree.  The command-line help processor prints
+ the referenced documents inline as part of the referencing
+ document.
+
+Inline markup constructs not listed above are printed literally in the
+command-line help output.  We prefer to use inline markup constructs that
+look correct in source form, so avoid use of \\-escapes in favor of inline
+literals when possible.
+
+Explicit markup blocks not matching directives listed above are removed from
+command-line help output.  Do not use them, except for plain ``..`` comments
+that are removed by Sphinx too.
+
+Note that nested indentation of blocks is not recognized by the
+command-line help processor.  Therefore:
+
+* Explicit markup blocks are recognized only when not indented
+  inside other blocks.
+
+* Literal blocks after paragraphs ending in ``::`` but not
+  at the top indentation level may consume all indented lines
+  following them.
+
+Try to avoid these cases in practice.
+
+CMake Domain
+------------
+
+CMake adds a `Sphinx Domain`_ called ``cmake``, also called the
+"CMake Domain".  It defines several "object" types for CMake
+documentation:
+
+``command``
+ A CMake language command.
+
+``generator``
+ A CMake native build system generator.
+ See the :manual:`cmake(1)` command-line tool's ``-G`` option.
+
+``manual``
+ A CMake manual page, like this :manual:`cmake-developer(7)` manual.
+
+``module``
+ A CMake module.
+ See the :manual:`cmake-modules(7)` manual
+ and the :command:`include` command.
+
+``policy``
+ A CMake policy.
+ See the :manual:`cmake-policies(7)` manual
+ and the :command:`cmake_policy` command.
+
+``prop_cache, prop_dir, prop_gbl, prop_sf, prop_inst, prop_test, prop_tgt``
+ A CMake cache, directory, global, source file, installed file, test,
+ or target property, respectively.  See the :manual:`cmake-properties(7)`
+ manual and the :command:`set_property` command.
+
+``variable``
+ A CMake language variable.
+ See the :manual:`cmake-variables(7)` manual
+ and the :command:`set` command.
+
+Documentation objects in the CMake Domain come from two sources.
+First, the CMake extension to Sphinx transforms every document named
+with the form ``Help/<type>/<file-name>.rst`` to a domain object with
+type ``<type>``.  The object name is extracted from the document title,
+which is expected to be of the form::
+
+ <object-name>
+ -------------
+
+and to appear at or near the top of the ``.rst`` file before any other
+lines starting in a letter, digit, or ``<``.  If no such title appears
+literally in the ``.rst`` file, the object name is the ``<file-name>``.
+If a title does appear, it is expected that ``<file-name>`` is equal
+to ``<object-name>`` with any ``<`` and ``>`` characters removed.
+
+Second, the CMake Domain provides directives to define objects inside
+other documents:
+
+.. code-block:: rst
+
+ .. command:: <command-name>
+
+  This indented block documents <command-name>.
+
+ .. variable:: <variable-name>
+
+  This indented block documents <variable-name>.
+
+Object types for which no directive is available must be defined using
+the first approach above.
+
+.. _`Sphinx Domain`: http://sphinx-doc.org/domains.html
+
+Cross-References
+----------------
+
+Sphinx uses reStructuredText interpreted text roles to provide
+cross-reference syntax.  The `CMake Domain`_ provides for each
+domain object type a role of the same name to cross-reference it.
+CMake Domain roles are inline markup of the forms::
+
+ :type:`name`
+ :type:`text <name>`
+
+where ``type`` is the domain object type and ``name`` is the
+domain object name.  In the first form the link text will be
+``name`` (or ``name()`` if the type is ``command``) and in
+the second form the link text will be the explicit ``text``.
+For example, the code:
+
+.. code-block:: rst
+
+ * The :command:`list` command.
+ * The :command:`list(APPEND)` sub-command.
+ * The :command:`list() command <list>`.
+ * The :command:`list(APPEND) sub-command <list>`.
+ * The :variable:`CMAKE_VERSION` variable.
+ * The :prop_tgt:`OUTPUT_NAME_<CONFIG>` target property.
+
+produces:
+
+* The :command:`list` command.
+* The :command:`list(APPEND)` sub-command.
+* The :command:`list() command <list>`.
+* The :command:`list(APPEND) sub-command <list>`.
+* The :variable:`CMAKE_VERSION` variable.
+* The :prop_tgt:`OUTPUT_NAME_<CONFIG>` target property.
+
+Note that CMake Domain roles differ from Sphinx and reStructuredText
+convention in that the form ``a<b>``, without a space preceding ``<``,
+is interpreted as a name instead of link text with an explicit target.
+This is necessary because we use ``<placeholders>`` frequently in
+object names like ``OUTPUT_NAME_<CONFIG>``.  The form ``a <b>``,
+with a space preceding ``<``, is still interpreted as a link text
+with an explicit target.
+
+Style
+-----
+
+Style: Section Headers
+^^^^^^^^^^^^^^^^^^^^^^
+
+When marking section titles, make the section decoration line as long as
+the title text.  Use only a line below the title, not above. For
+example:
+
+.. code-block:: rst
+
+  Title Text
+  ----------
+
+Capitalize the first letter of each non-minor word in the title.
+
+The section header underline character hierarchy is
+
+* ``#``: Manual group (part) in the master document
+* ``*``: Manual (chapter) title
+* ``=``: Section within a manual
+* ``-``: Subsection or `CMake Domain`_ object document title
+* ``^``: Subsubsection or `CMake Domain`_ object document section
+* ``"``: Paragraph or `CMake Domain`_ object document subsection
+
+Style: Whitespace
+^^^^^^^^^^^^^^^^^
+
+Use two spaces for indentation.  Use two spaces between sentences in
+prose.
+
+Style: Line Length
+^^^^^^^^^^^^^^^^^^
+
+Prefer to restrict the width of lines to 75-80 columns.  This is not a
+hard restriction, but writing new paragraphs wrapped at 75 columns
+allows space for adding minor content without significant re-wrapping of
+content.
+
+Style: Prose
+^^^^^^^^^^^^
+
+Use American English spellings in prose.
+
+Style: Starting Literal Blocks
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Prefer to mark the start of literal blocks with ``::`` at the end of
+the preceding paragraph. In cases where the following block gets
+a ``code-block`` marker, put a single ``:`` at the end of the preceding
+paragraph.
+
+Style: CMake Command Signatures
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Command signatures should be marked up as plain literal blocks, not as
+cmake ``code-blocks``.
+
+Signatures are separated from preceding content by a section header.
+That is, use:
+
+.. code-block:: rst
+
+  ... preceding paragraph.
+
+  Normal Libraries
+  ^^^^^^^^^^^^^^^^
+
+  ::
+
+    add_library(<lib> ...)
+
+  This signature is used for ...
+
+Signatures of commands should wrap optional parts with square brackets,
+and should mark list of optional arguments with an ellipsis (``...``).
+Elements of the signature which are specified by the user should be
+specified with angle brackets, and may be referred to in prose using
+``inline-literal`` syntax.
+
+Style: Boolean Constants
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Use "``OFF``" and "``ON``" for boolean values which can be modified by
+the user, such as :prop_tgt:`POSITION_INDEPENDENT_CODE`. Such properties
+may be "enabled" and "disabled". Use "``True``" and "``False``" for
+inherent values which can't be modified after being set, such as the
+:prop_tgt:`IMPORTED` property of a build target.
+
+Style: Inline Literals
+^^^^^^^^^^^^^^^^^^^^^^
+
+Mark up references to keywords in signatures, file names, and other
+technical terms with ``inline-literal`` syntax, for example:
+
+.. code-block:: rst
+
+  If ``WIN32`` is used with :command:`add_executable`, the
+  :prop_tgt:`WIN32_EXECUTABLE` target property is enabled. That command
+  creates the file ``<name>.exe`` on Windows.
+
+Style: Cross-References
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Mark up linkable references as links, including repeats.
+An alternative, which is used by wikipedia
+(`<http://en.wikipedia.org/wiki/WP:REPEATLINK>`_),
+is to link to a reference only once per article. That style is not used
+in CMake documentation.
+
+Style: Referencing CMake Concepts
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+If referring to a concept which corresponds to a property, and that
+concept is described in a high-level manual, prefer to link to the
+manual section instead of the property. For example:
+
+.. code-block:: rst
+
+  This command creates an :ref:`Imported Target <Imported Targets>`.
+
+instead of:
+
+.. code-block:: rst
+
+  This command creates an :prop_tgt:`IMPORTED` target.
+
+The latter should be used only when referring specifically to the
+property.
+
+References to manual sections are not automatically created by creating
+a section, but code such as:
+
+.. code-block:: rst
+
+  .. _`Imported Targets`:
+
+creates a suitable anchor.  Use an anchor name which matches the name
+of the corresponding section.  Refer to the anchor using a
+cross-reference with specified text.
+
+Imported Targets need the ``IMPORTED`` term marked up with care in
+particular because the term may refer to a command keyword
+(``IMPORTED``), a target property (:prop_tgt:`IMPORTED`), or a
+concept (:ref:`Imported Targets`).
+
+Where a property, command or variable is related conceptually to others,
+by for example, being related to the buildsystem description, generator
+expressions or Qt, each relevant property, command or variable should
+link to the primary manual, which provides high-level information.  Only
+particular information relating to the command should be in the
+documentation of the command.
+
+Style: Referencing CMake Domain Objects
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+When referring to `CMake Domain`_ objects such as properties, variables,
+commands etc, prefer to link to the target object and follow that with
+the type of object it is.  For example:
+
+.. code-block:: rst
+
+  Set the :prop_tgt:`AUTOMOC` target property to ``ON``.
+
+Instead of
+
+.. code-block:: rst
+
+  Set the target property :prop_tgt:`AUTOMOC` to ``ON``.
+
+The ``policy`` directive is an exception, and the type us usually
+referred to before the link:
+
+.. code-block:: rst
+
+  If policy :prop_tgt:`CMP0022` is set to ``NEW`` the behavior is ...
+
+However, markup self-references with ``inline-literal`` syntax.
+For example, within the :command:`add_executable` command
+documentation, use
+
+.. code-block:: rst
+
+  ``add_executable``
+
+not
+
+.. code-block:: rst
+
+  :command:`add_executable`
+
+which is used elsewhere.
+
+Modules
+=======
+
+The ``Modules`` directory contains CMake-language ``.cmake`` module files.
+
+Module Documentation
+--------------------
+
+To document CMake module ``Modules/<module-name>.cmake``, modify
+``Help/manual/cmake-modules.7.rst`` to reference the module in the
+``toctree`` directive, in sorted order, as::
+
+ /module/<module-name>
+
+Then add the module document file ``Help/module/<module-name>.rst``
+containing just the line::
+
+ .. cmake-module:: ../../Modules/<module-name>.cmake
+
+The ``cmake-module`` directive will scan the module file to extract
+reStructuredText markup from comment blocks that start in ``.rst:``.
+At the top of ``Modules/<module-name>.cmake``, begin with the following
+license notice:
+
+.. code-block:: cmake
+
+ # Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+ # file Copyright.txt or https://cmake.org/licensing for details.
+
+After this notice, add a *BLANK* line.  Then, add documentation using
+a :ref:`Line Comment` block of the form:
+
+.. code-block:: cmake
+
+ #.rst:
+ # <module-name>
+ # -------------
+ #
+ # <reStructuredText documentation of module>
+
+or a :ref:`Bracket Comment` of the form:
+
+::
+
+ #[[.rst:
+ <module-name>
+ -------------
+
+ <reStructuredText documentation of module>
+ #]]
+
+Any number of ``=`` may be used in the opening and closing brackets
+as long as they match.  Content on the line containing the closing
+bracket is excluded if and only if the line starts in ``#``.
+
+Additional such ``.rst:`` comments may appear anywhere in the module file.
+All such comments must start with ``#`` in the first column.
+
+For example, a ``Modules/Findxxx.cmake`` module may contain:
+
+::
+
+ # Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+ # file Copyright.txt or https://cmake.org/licensing for details.
+
+ #.rst:
+ # FindXxx
+ # -------
+ #
+ # This is a cool module.
+ # This module does really cool stuff.
+ # It can do even more than you think.
+ #
+ # It even needs two paragraphs to tell you about it.
+ # And it defines the following variables:
+ #
+ # * VAR_COOL: this is great isn't it?
+ # * VAR_REALLY_COOL: cool right?
+
+ <code>
+
+ #[========================================[.rst:
+ .. command:: xxx_do_something
+
+  This command does something for Xxx::
+
+   xxx_do_something(some arguments)
+ #]========================================]
+ macro(xxx_do_something)
+   <code>
+ endmacro()
+
+Test the documentation formatting by running
+``cmake --help-module <module-name>``, and also by enabling the
+``SPHINX_HTML`` and ``SPHINX_MAN`` options to build the documentation.
+Edit the comments until generated documentation looks satisfactory.  To
+have a .cmake file in this directory NOT show up in the modules
+documentation, simply leave out the ``Help/module/<module-name>.rst``
+file and the ``Help/manual/cmake-modules.7.rst`` toctree entry.
+
+.. _`Find Modules`:
+
+Find Modules
+------------
+
+A "find module" is a ``Modules/Find<package>.cmake`` file to be loaded
+by the :command:`find_package` command when invoked for ``<package>``.
+
+The primary task of a find module is to determine whether a package
+exists on the system, set the ``<package>_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.
+
+Like all modules, find modules should be properly documented.  To add a
+module to the CMake documentation, follow the steps in the `Module
+Documentation`_ section above.
+
+
+
+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 first thing that is needed is a license notice.
+
+.. code-block:: cmake
+
+ # Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+ # file Copyright.txt or https://cmake.org/licensing for details.
+
+Next we need module documentation.  CMake's documentation system requires you
+to follow the license notice with a blank line and then with a documentation
+marker and the name of the module.  You should follow this with a simple
+statement of what the module does.
+
+.. code-block:: cmake
+
+  #.rst:
+  # FindFoo
+  # -------
+  #
+  # Finds the Foo library
+  #
+
+More description may be required for some packages.  If there are
+caveats or other details users of the module should be aware of, you can
+add further paragraphs below this.  Then you need to document what
+variables and imported targets are set by the module, such as
+
+.. code-block:: cmake
+
+  # 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
+  #
+  # and the following imported targets::
+  #
+  #   Foo::Foo   - The Foo library
+
+If the package provides any macros, they should be listed here, but can
+be documented where they are defined.  See the `Module
+Documentation`_ section above for more details.
+
+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 that 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.10/Help/manual/cmake-env-variables.7.rst b/share/cmake-3.10/Help/manual/cmake-env-variables.7.rst
new file mode 100644
index 0000000..fed129e
--- /dev/null
+++ b/share/cmake-3.10/Help/manual/cmake-env-variables.7.rst
@@ -0,0 +1,54 @@
+.. cmake-manual-description: CMake Environment Variables Reference
+
+cmake-env-variables(7)
+**********************
+
+.. only:: html
+
+   .. contents::
+
+Environment Variables that Control the Build
+============================================
+
+.. toctree::
+   :maxdepth: 1
+
+   /envvar/CMAKE_CONFIG_TYPE
+   /envvar/CMAKE_MSVCIDE_RUN_PATH
+   /envvar/CMAKE_OSX_ARCHITECTURES
+   /envvar/LDFLAGS
+   /envvar/MACOSX_DEPLOYMENT_TARGET
+
+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/RC
+   /envvar/RCFLAGS
+
+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_USE_LAUNCHERS_DEFAULT
+   /envvar/DASHBOARD_TEST_FROM_CTEST
diff --git a/share/cmake-3.10/Help/manual/cmake-generator-expressions.7.rst b/share/cmake-3.10/Help/manual/cmake-generator-expressions.7.rst
new file mode 100644
index 0000000..bddb174
--- /dev/null
+++ b/share/cmake-3.10/Help/manual/cmake-generator-expressions.7.rst
@@ -0,0 +1,297 @@
+.. 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.
+
+This means that they enable conditional linking, conditional
+definitions used when compiling, and conditional include directories and
+more.  The conditions may be based on the build configuration, target
+properties, platform information or any other queryable information.
+
+Logical Expressions
+===================
+
+Logical expressions are used to create conditional output.  The basic
+expressions are the ``0`` and ``1`` expressions.  Because other logical
+expressions evaluate to either ``0`` or ``1``, they can be composed to
+create conditional output::
+
+  $<$<CONFIG:Debug>:DEBUG_MODE>
+
+expands to ``DEBUG_MODE`` when the ``Debug`` configuration is used, and
+otherwise expands to nothing.
+
+Available logical expressions are:
+
+``$<BOOL:...>``
+  ``1`` if the ``...`` is true, else ``0``
+``$<AND:?[,?]...>``
+  ``1`` if all ``?`` are ``1``, else ``0``
+
+  The ``?`` must always be either ``0`` or ``1`` in boolean expressions.
+
+``$<OR:?[,?]...>``
+  ``0`` if all ``?`` are ``0``, else ``1``
+``$<NOT:?>``
+  ``0`` if ``?`` is ``1``, else ``1``
+``$<IF:?,true-value...,false-value...>```
+  ``true-value...`` if ``?`` is ``1``, ``false-value...`` if ``?`` is ``0``
+``$<STREQUAL:a,b>``
+  ``1`` if ``a`` is STREQUAL ``b``, else ``0``
+``$<EQUAL:a,b>``
+  ``1`` if ``a`` is EQUAL ``b`` in a numeric comparison, 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:comp>``
+  ``1`` if the CMake-id of the platform matches ``comp``, otherwise ``0``.
+``$<C_COMPILER_ID:comp>``
+  ``1`` if the CMake-id of the C compiler matches ``comp``, otherwise ``0``.
+``$<CXX_COMPILER_ID:comp>``
+  ``1`` if the CMake-id of the CXX compiler matches ``comp``, otherwise ``0``.
+``$<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``.
+``$<C_COMPILER_VERSION:ver>``
+  ``1`` if the version of the C compiler matches ``ver``, otherwise ``0``.
+``$<CXX_COMPILER_VERSION:ver>``
+  ``1`` if the version of the CXX compiler matches ``ver``, otherwise ``0``.
+``$<TARGET_POLICY:pol>``
+  ``1`` if the policy ``pol`` 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:feature[,feature]...>``
+  ``1`` if all of the ``feature`` 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.
+``$<COMPILE_LANGUAGE:lang>``
+  ``1`` when the language used for compilation unit matches ``lang``,
+  otherwise ``0``.  This expression used to specify compile options for
+  source files of a particular language in a target. For example, to specify
+  the use of the ``-fno-exceptions`` compile option (compiler id checks
+  elided):
+
+  .. code-block:: cmake
+
+    add_executable(myapp main.cpp foo.c bar.cpp)
+    target_compile_options(myapp
+      PRIVATE $<$<COMPILE_LANGUAGE:CXX>:-fno-exceptions>
+    )
+
+  This generator expression has limited use because it is not possible to
+  use it with the Visual Studio generators.  Portable buildsystems would
+  not use this expression, and would 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)
+
+  The ``Makefile`` and ``Ninja`` based generators can also use this
+  expression to specify compile-language specific compile definitions
+  and include directories:
+
+  .. code-block:: cmake
+
+    add_executable(myapp main.cpp foo.c bar.cpp)
+    target_compile_definitions(myapp
+      PRIVATE $<$<COMPILE_LANGUAGE:CXX>:COMPILING_CXX>
+    )
+    target_include_directories(myapp
+      PRIVATE $<$<COMPILE_LANGUAGE:CXX>:/opt/foo/cxx_headers>
+    )
+
+Informational Expressions
+=========================
+
+These expressions expand to some information. The information may be used
+directly, eg::
+
+  include_directories(/usr/include/$<CXX_COMPILER_ID>/)
+
+expands to ``/usr/include/GNU/`` or ``/usr/include/Clang/`` etc, depending on
+the Id of the compiler.
+
+These expressions may also may be combined with logical expressions::
+
+  $<$<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.
+
+Available informational expressions are:
+
+``$<CONFIGURATION>``
+  Configuration name. Deprecated. Use ``CONFIG`` instead.
+``$<CONFIG>``
+  Configuration name
+``$<PLATFORM_ID>``
+  The CMake-id of the platform.
+  See also the :variable:`CMAKE_SYSTEM_NAME` variable.
+``$<C_COMPILER_ID>``
+  The CMake-id of the C compiler used.
+  See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
+``$<CXX_COMPILER_ID>``
+  The CMake-id of the CXX 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.
+``$<TARGET_FILE:tgt>``
+  Full path to main file (.exe, .so.1.2, .a) where ``tgt`` is the name of a target.
+``$<TARGET_FILE_NAME:tgt>``
+  Name of main file (.exe, .so.1.2, .a).
+``$<TARGET_FILE_DIR:tgt>``
+  Directory of main file (.exe, .so.1.2, .a).
+``$<TARGET_LINKER_FILE:tgt>``
+  File used to link (.a, .lib, .so) where ``tgt`` is the name of a target.
+``$<TARGET_LINKER_FILE_NAME:tgt>``
+  Name of file used to link (.a, .lib, .so).
+``$<TARGET_LINKER_FILE_DIR:tgt>``
+  Directory of file used to link (.a, .lib, .so).
+``$<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_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 on which the generator
+  expression is evaluated.
+``$<INSTALL_PREFIX>``
+  Content of the install prefix when the target is exported via
+  :command:`install(EXPORT)` and empty otherwise.
+``$<COMPILE_LANGUAGE>``
+  The compile language of source files when evaluating compile options. See
+  the unary version for notes about portability of this generator
+  expression.
+
+Output Expressions
+==================
+
+These expressions generate output, in some cases depending on an input. These
+expressions may be combined with other expressions for information or logical
+comparison::
+
+  -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``. Note that a more-complete use
+in this situation would require first checking if the INCLUDE_DIRECTORIES
+property is non-empty::
+
+  $<$<BOOL:${prop}>:-I$<JOIN:${prop}, -I>>
+
+where ``${prop}`` refers to a helper variable::
+
+  set(prop "$<TARGET_PROPERTY:INCLUDE_DIRECTORIES>")
+
+Available output expressions are:
+
+``$<0:...>``
+  Empty string (ignores ``...``)
+``$<1:...>``
+  Content of ``...``
+``$<JOIN:list,...>``
+  Joins the list with the content of ``...``
+``$<ANGLE-R>``
+  A literal ``>``. Used to compare strings which contain a ``>`` for example.
+``$<COMMA>``
+  A literal ``,``. Used to compare strings which contain a ``,`` for example.
+``$<SEMICOLON>``
+  A literal ``;``. Used to prevent list expansion on an argument with ``;``.
+``$<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.
+``$<LOWER_CASE:...>``
+  Content of ``...`` converted to lower case.
+``$<UPPER_CASE:...>``
+  Content of ``...`` converted to upper case.
+``$<MAKE_C_IDENTIFIER:...>``
+  Content of ``...`` converted to a C identifier.
+``$<TARGET_OBJECTS:objLib>``
+  List of objects resulting from build of ``objLib``. ``objLib`` must be an
+  object of type ``OBJECT_LIBRARY``.
+``$<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.
diff --git a/share/cmake-3.10/Help/manual/cmake-generators.7.rst b/share/cmake-3.10/Help/manual/cmake-generators.7.rst
new file mode 100644
index 0000000..a37c65b
--- /dev/null
+++ b/share/cmake-3.10/Help/manual/cmake-generators.7.rst
@@ -0,0 +1,113 @@
+.. 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
+----------------------------------
+
+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 Generator
+^^^^^^^^^^^^^^^
+
+.. toctree::
+   :maxdepth: 1
+
+   /generator/Ninja
+
+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
+
+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/KDevelop3
+   /generator/Kate
+   /generator/Sublime Text 2
diff --git a/share/cmake-3.6/Help/manual/cmake-gui.1.rst b/share/cmake-3.10/Help/manual/cmake-gui.1.rst
similarity index 100%
rename from share/cmake-3.6/Help/manual/cmake-gui.1.rst
rename to share/cmake-3.10/Help/manual/cmake-gui.1.rst
diff --git a/share/cmake-3.10/Help/manual/cmake-language.7.rst b/share/cmake-3.10/Help/manual/cmake-language.7.rst
new file mode 100644
index 0000000..87f8f9d
--- /dev/null
+++ b/share/cmake-3.10/Help/manual/cmake-language.7.rst
@@ -0,0 +1,580 @@
+.. cmake-manual-description: CMake Language Reference
+
+cmake-language(7)
+*****************
+
+.. only:: html
+
+   .. contents::
+
+Organization
+============
+
+CMake input files are written in the "CMake Language" in source files
+named ``CMakeLists.txt`` or ending in a ``.cmake`` file name extension.
+
+CMake Language source files in a project are organized into:
+
+* `Directories`_ (``CMakeLists.txt``),
+* `Scripts`_ (``<script>.cmake``), and
+* `Modules`_ (``<module>.cmake``).
+
+Directories
+-----------
+
+When CMake processes a project source tree, the entry point is
+a source file called ``CMakeLists.txt`` in the top-level source
+directory.  This file may contain the entire build specification
+or use the :command:`add_subdirectory` command to add subdirectories
+to the build.  Each subdirectory added by the command must also
+contain a ``CMakeLists.txt`` file as the entry point to that
+directory.  For each source directory whose ``CMakeLists.txt`` file
+is processed CMake generates a corresponding directory in the build
+tree to act as the default working and output directory.
+
+Scripts
+-------
+
+An individual ``<script>.cmake`` source file may be processed
+in *script mode* by using the :manual:`cmake(1)` command-line tool
+with the ``-P`` option.  Script mode simply runs the commands in
+the given CMake Language source file and does not generate a
+build system.  It does not allow CMake commands that define build
+targets or actions.
+
+Modules
+-------
+
+CMake Language code in either `Directories`_ or `Scripts`_ may
+use the :command:`include` command to load a ``<module>.cmake``
+source file in the scope of the including context.
+See the :manual:`cmake-modules(7)` manual page for documentation
+of modules included with the CMake distribution.
+Project source trees may also provide their own modules and
+specify their location(s) in the :variable:`CMAKE_MODULE_PATH`
+variable.
+
+Syntax
+======
+
+.. _`CMake Language Encoding`:
+
+Encoding
+--------
+
+A CMake Language source file may be written in 7-bit ASCII text for
+maximum portability across all supported platforms.  Newlines may be
+encoded as either ``\n`` or ``\r\n`` but will be converted to ``\n``
+as input files are read.
+
+Note that the implementation is 8-bit clean so source files may
+be encoded as UTF-8 on platforms with system APIs supporting this
+encoding.  In addition, CMake 3.2 and above support source files
+encoded in UTF-8 on Windows (using UTF-16 to call system APIs).
+Furthermore, CMake 3.0 and above allow a leading UTF-8
+`Byte-Order Mark`_ in source files.
+
+.. _`Byte-Order Mark`: http://en.wikipedia.org/wiki/Byte_order_mark
+
+Source Files
+------------
+
+A CMake Language source file consists of zero or more
+`Command Invocations`_ separated by newlines and optionally
+spaces and `Comments`_:
+
+.. raw:: latex
+
+   \begin{small}
+
+.. productionlist::
+ file: `file_element`*
+ file_element: `command_invocation` `line_ending` |
+             : (`bracket_comment`|`space`)* `line_ending`
+ line_ending: `line_comment`? `newline`
+ space: <match '[ \t]+'>
+ newline: <match '\n'>
+
+.. raw:: latex
+
+   \end{small}
+
+Note that any source file line not inside `Command Arguments`_ or
+a `Bracket Comment`_ can end in a `Line Comment`_.
+
+.. _`Command Invocations`:
+
+Command Invocations
+-------------------
+
+A *command invocation* is a name followed by paren-enclosed arguments
+separated by whitespace:
+
+.. raw:: latex
+
+   \begin{small}
+
+.. productionlist::
+ command_invocation: `space`* `identifier` `space`* '(' `arguments` ')'
+ identifier: <match '[A-Za-z_][A-Za-z0-9_]*'>
+ arguments: `argument`? `separated_arguments`*
+ separated_arguments: `separation`+ `argument`? |
+                    : `separation`* '(' `arguments` ')'
+ separation: `space` | `line_ending`
+
+.. raw:: latex
+
+   \end{small}
+
+For example:
+
+.. code-block:: cmake
+
+ add_executable(hello world.c)
+
+Command names are case-insensitive.
+Nested unquoted parentheses in the arguments must balance.
+Each ``(`` or ``)`` is given to the command invocation as
+a literal `Unquoted Argument`_.  This may be used in calls
+to the :command:`if` command to enclose conditions.
+For example:
+
+.. code-block:: cmake
+
+ if(FALSE AND (FALSE OR TRUE)) # evaluates to FALSE
+
+.. note::
+ CMake versions prior to 3.0 require command name identifiers
+ to be at least 2 characters.
+
+ CMake versions prior to 2.8.12 silently accept an `Unquoted Argument`_
+ or a `Quoted Argument`_ immediately following a `Quoted Argument`_ and
+ not separated by any whitespace.  For compatibility, CMake 2.8.12 and
+ higher accept such code but produce a warning.
+
+Command Arguments
+-----------------
+
+There are three types of arguments within `Command Invocations`_:
+
+.. raw:: latex
+
+   \begin{small}
+
+.. productionlist::
+ argument: `bracket_argument` | `quoted_argument` | `unquoted_argument`
+
+.. raw:: latex
+
+   \end{small}
+
+.. _`Bracket Argument`:
+
+Bracket Argument
+^^^^^^^^^^^^^^^^
+
+A *bracket argument*, inspired by `Lua`_ long bracket syntax,
+encloses content between opening and closing "brackets" of the
+same length:
+
+.. raw:: latex
+
+   \begin{small}
+
+.. productionlist::
+ bracket_argument: `bracket_open` `bracket_content` `bracket_close`
+ bracket_open: '[' '='* '['
+ bracket_content: <any text not containing a `bracket_close` with
+                :  the same number of '=' as the `bracket_open`>
+ bracket_close: ']' '='* ']'
+
+.. raw:: latex
+
+   \end{small}
+
+An opening bracket is written ``[`` followed by zero or more ``=`` followed
+by ``[``.  The corresponding closing bracket is written ``]`` followed
+by the same number of ``=`` followed by ``]``.
+Brackets do not nest.  A unique length may always be chosen
+for the opening and closing brackets to contain closing brackets
+of other lengths.
+
+Bracket argument content consists of all text between the opening
+and closing brackets, except that one newline immediately following
+the opening bracket, if any, is ignored.  No evaluation of the
+enclosed content, such as `Escape Sequences`_ or `Variable References`_,
+is performed.  A bracket argument is always given to the command
+invocation as exactly one argument.
+
+For example:
+
+.. code-block:: cmake
+
+ message([=[
+ This is the first line in a bracket argument with bracket length 1.
+ No \-escape sequences or ${variable} references are evaluated.
+ This is always one argument even though it contains a ; character.
+ The text does not end on a closing bracket of length 0 like ]].
+ It does end in a closing bracket of length 1.
+ ]=])
+
+.. note::
+ CMake versions prior to 3.0 do not support bracket arguments.
+ They interpret the opening bracket as the start of an
+ `Unquoted Argument`_.
+
+.. _`Lua`: http://www.lua.org/
+
+.. _`Quoted Argument`:
+
+Quoted Argument
+^^^^^^^^^^^^^^^
+
+A *quoted argument* encloses content between opening and closing
+double-quote characters:
+
+.. raw:: latex
+
+   \begin{small}
+
+.. productionlist::
+ quoted_argument: '"' `quoted_element`* '"'
+ quoted_element: <any character except '\' or '"'> |
+                 : `escape_sequence` |
+                 : `quoted_continuation`
+ quoted_continuation: '\' `newline`
+
+.. raw:: latex
+
+   \end{small}
+
+Quoted argument content consists of all text between opening and
+closing quotes.  Both `Escape Sequences`_ and `Variable References`_
+are evaluated.  A quoted argument is always given to the command
+invocation as exactly one argument.
+
+For example:
+
+::
+
+ message("This is a quoted argument containing multiple lines.
+ This is always one argument even though it contains a ; character.
+ Both \\-escape sequences and ${variable} references are evaluated.
+ The text does not end on an escaped double-quote like \".
+ It does end in an unescaped double quote.
+ ")
+
+The final ``\`` on any line ending in an odd number of backslashes
+is treated as a line continuation and ignored along with the
+immediately following newline character.  For example:
+
+.. code-block:: cmake
+
+ message("\
+ This is the first line of a quoted argument. \
+ In fact it is the only line but since it is long \
+ the source code uses line continuation.\
+ ")
+
+.. note::
+ CMake versions prior to 3.0 do not support continuation with ``\``.
+ They report errors in quoted arguments containing lines ending in
+ an odd number of ``\`` characters.
+
+.. _`Unquoted Argument`:
+
+Unquoted Argument
+^^^^^^^^^^^^^^^^^
+
+An *unquoted argument* is not enclosed by any quoting syntax.
+It may not contain any whitespace, ``(``, ``)``, ``#``, ``"``, or ``\``
+except when escaped by a backslash:
+
+.. raw:: latex
+
+   \begin{small}
+
+.. productionlist::
+ unquoted_argument: `unquoted_element`+ | `unquoted_legacy`
+ unquoted_element: <any character except whitespace or one of '()#"\'> |
+                 : `escape_sequence`
+ unquoted_legacy: <see note in text>
+
+.. raw:: latex
+
+   \end{small}
+
+Unquoted argument content consists of all text in a contiguous block
+of allowed or escaped characters.  Both `Escape Sequences`_ and
+`Variable References`_ are evaluated.  The resulting value is divided
+in the same way `Lists`_ divide into elements.  Each non-empty element
+is given to the command invocation as an argument.  Therefore an
+unquoted argument may be given to a command invocation as zero or
+more arguments.
+
+For example:
+
+.. code-block:: cmake
+
+ foreach(arg
+     NoSpace
+     Escaped\ Space
+     This;Divides;Into;Five;Arguments
+     Escaped\;Semicolon
+     )
+   message("${arg}")
+ endforeach()
+
+.. note::
+ To support legacy CMake code, unquoted arguments may also contain
+ double-quoted strings (``"..."``, possibly enclosing horizontal
+ whitespace), and make-style variable references (``$(MAKEVAR)``).
+
+ Unescaped double-quotes must balance, may not appear at the
+ beginning of an unquoted argument, and are treated as part of the
+ content.  For example, the unquoted arguments ``-Da="b c"``,
+ ``-Da=$(v)``, and ``a" "b"c"d`` are each interpreted literally.
+ They may instead be written as quoted arguments ``"-Da=\"b c\""``,
+ ``"-Da=$(v)"``, and ``"a\" \"b\"c\"d"``, respectively.
+
+ Make-style references are treated literally as part of the content
+ and do not undergo variable expansion.  They are treated as part
+ of a single argument (rather than as separate ``$``, ``(``,
+ ``MAKEVAR``, and ``)`` arguments).
+
+ The above "unquoted_legacy" production represents such arguments.
+ We do not recommend using legacy unquoted arguments in new code.
+ Instead use a `Quoted Argument`_ or a `Bracket Argument`_ to
+ represent the content.
+
+.. _`Escape Sequences`:
+
+Escape Sequences
+----------------
+
+An *escape sequence* is a ``\`` followed by one character:
+
+.. raw:: latex
+
+   \begin{small}
+
+.. productionlist::
+ escape_sequence: `escape_identity` | `escape_encoded` | `escape_semicolon`
+ escape_identity: '\' <match '[^A-Za-z0-9;]'>
+ escape_encoded: '\t' | '\r' | '\n'
+ escape_semicolon: '\;'
+
+.. raw:: latex
+
+   \end{small}
+
+A ``\`` followed by a non-alphanumeric character simply encodes the literal
+character without interpreting it as syntax.  A ``\t``, ``\r``, or ``\n``
+encodes a tab, carriage return, or newline character, respectively. A ``\;``
+outside of any `Variable References`_  encodes itself but may be used in an
+`Unquoted Argument`_ to encode the ``;`` without dividing the argument
+value on it.  A ``\;`` inside `Variable References`_ encodes the literal
+``;`` character.  (See also policy :policy:`CMP0053` documentation for
+historical considerations.)
+
+.. _`Variable References`:
+
+Variable References
+-------------------
+
+A *variable reference* has the form ``${variable_name}`` and is
+evaluated inside a `Quoted Argument`_ or an `Unquoted Argument`_.
+A variable reference is replaced by the value of the variable,
+or by the empty string if the variable is not set.
+Variable references can nest and are evaluated from the
+inside out, e.g. ``${outer_${inner_variable}_variable}``.
+
+Literal variable references may consist of alphanumeric characters,
+the characters ``/_.+-``, and `Escape Sequences`_.  Nested references
+may be used to evaluate variables of any name.  (See also policy
+:policy:`CMP0053` documentation for historical considerations.)
+
+The `Variables`_ section documents the scope of variable names
+and how their values are set.
+
+An *environment variable reference* has the form ``$ENV{VAR}`` and
+is evaluated in the same contexts as a normal variable reference.
+
+Comments
+--------
+
+A comment starts with a ``#`` character that is not inside a
+`Bracket Argument`_, `Quoted Argument`_, or escaped with ``\``
+as part of an `Unquoted Argument`_.  There are two types of
+comments: a `Bracket Comment`_ and a `Line Comment`_.
+
+.. _`Bracket Comment`:
+
+Bracket Comment
+^^^^^^^^^^^^^^^
+
+A ``#`` immediately followed by a `Bracket Argument`_ forms a
+*bracket comment* consisting of the entire bracket enclosure:
+
+.. raw:: latex
+
+   \begin{small}
+
+.. productionlist::
+ bracket_comment: '#' `bracket_argument`
+
+.. raw:: latex
+
+   \end{small}
+
+For example:
+
+::
+
+ #[[This is a bracket comment.
+ It runs until the close bracket.]]
+ message("First Argument\n" #[[Bracket Comment]] "Second Argument")
+
+.. note::
+ CMake versions prior to 3.0 do not support bracket comments.
+ They interpret the opening ``#`` as the start of a `Line Comment`_.
+
+.. _`Line Comment`:
+
+Line Comment
+^^^^^^^^^^^^
+
+A ``#`` not immediately followed by a `Bracket Argument`_ forms a
+*line comment* that runs until the end of the line:
+
+.. raw:: latex
+
+   \begin{small}
+
+.. productionlist::
+ line_comment: '#' <any text not starting in a `bracket_argument`
+             :      and not containing a `newline`>
+
+.. raw:: latex
+
+   \end{small}
+
+For example:
+
+.. code-block:: cmake
+
+ # This is a line comment.
+ message("First Argument\n" # This is a line comment :)
+         "Second Argument") # This is a line comment.
+
+Control Structures
+==================
+
+Conditional Blocks
+------------------
+
+The :command:`if`/:command:`elseif`/:command:`else`/:command:`endif`
+commands delimit code blocks to be executed conditionally.
+
+Loops
+-----
+
+The :command:`foreach`/:command:`endforeach` and
+:command:`while`/:command:`endwhile` commands delimit code
+blocks to be executed in a loop.  Inside such blocks the
+:command:`break` command may be used to terminate the loop
+early whereas the :command:`continue` command may be used
+to start with the next iteration immediately.
+
+Command Definitions
+-------------------
+
+The :command:`macro`/:command:`endmacro`, and
+:command:`function`/:command:`endfunction` commands delimit
+code blocks to be recorded for later invocation as commands.
+
+.. _`CMake Language Variables`:
+
+Variables
+=========
+
+Variables are the basic unit of storage in the CMake Language.
+Their values are always of string type, though some commands may
+interpret the strings as values of other types.
+The :command:`set` and :command:`unset` commands explicitly
+set or unset a variable, but other commands have semantics
+that modify variables as well.
+Variable names are case-sensitive and may consist of almost
+any text, but we recommend sticking to names consisting only
+of alphanumeric characters plus ``_`` and ``-``.
+
+Variables have dynamic scope.  Each variable "set" or "unset"
+creates a binding in the current scope:
+
+Function Scope
+ `Command Definitions`_ created by the :command:`function` command
+ create commands that, when invoked, process the recorded commands
+ in a new variable binding scope.  A variable "set" or "unset"
+ binds in this scope and is visible for the current function and
+ any nested calls within it, but not after the function returns.
+
+Directory Scope
+ Each of the `Directories`_ in a source tree has its own variable
+ bindings.  Before processing the ``CMakeLists.txt`` file for a
+ directory, CMake copies all variable bindings currently defined
+ in the parent directory, if any, to initialize the new directory
+ scope.  CMake `Scripts`_, when processed with ``cmake -P``, bind
+ variables in one "directory" scope.
+
+ A variable "set" or "unset" not inside a function call binds
+ to the current directory scope.
+
+Persistent Cache
+ CMake stores a separate set of "cache" variables, or "cache entries",
+ whose values persist across multiple runs within a project build
+ tree.  Cache entries have an isolated binding scope modified only
+ by explicit request, such as by the ``CACHE`` option of the
+ :command:`set` and :command:`unset` commands.
+
+When evaluating `Variable References`_, CMake first searches the
+function call stack, if any, for a binding and then falls back
+to the binding in the current directory scope, if any.  If a
+"set" binding is found, its value is used.  If an "unset" binding
+is found, or no binding is found, CMake then searches for a
+cache entry.  If a cache entry is found, its value is used.
+Otherwise, the variable reference evaluates to an empty string.
+
+The :manual:`cmake-variables(7)` manual documents many variables
+that are provided by CMake or have meaning to CMake when set
+by project code.
+
+.. _`CMake Language Lists`:
+
+Lists
+=====
+
+Although all values in CMake are stored as strings, a string
+may be treated as a list in certain contexts, such as during
+evaluation of an `Unquoted Argument`_.  In such contexts, a string
+is divided into list elements by splitting on ``;`` characters not
+following an unequal number of ``[`` and ``]`` characters and not
+immediately preceded by a ``\``.  The sequence ``\;`` does not
+divide a value but is replaced by ``;`` in the resulting element.
+
+A list of elements is represented as a string by concatenating
+the elements separated by ``;``.  For example, the :command:`set`
+command stores multiple values into the destination variable
+as a list:
+
+.. code-block:: cmake
+
+ set(srcs a.c b.c c.c) # sets "srcs" to "a.c;b.c;c.c"
+
+Lists are meant for simple use cases such as a list of source
+files and should not be used for complex data processing tasks.
+Most commands that construct lists do not escape ``;`` characters
+in list elements, thus flattening nested lists:
+
+.. code-block:: cmake
+
+ set(x a "b;c") # sets "x" to "a;b;c", not "a;b\;c"
diff --git a/share/cmake-3.10/Help/manual/cmake-modules.7.rst b/share/cmake-3.10/Help/manual/cmake-modules.7.rst
new file mode 100644
index 0000000..8f4b252
--- /dev/null
+++ b/share/cmake-3.10/Help/manual/cmake-modules.7.rst
@@ -0,0 +1,258 @@
+.. cmake-manual-description: CMake Modules Reference
+
+cmake-modules(7)
+****************
+
+.. only:: html
+
+   .. contents::
+
+All Modules
+===========
+
+.. 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/CheckFunctionExists
+   /module/CheckIPOSupported
+   /module/CheckIncludeFileCXX
+   /module/CheckIncludeFile
+   /module/CheckIncludeFiles
+   /module/CheckLanguage
+   /module/CheckLibraryExists
+   /module/CheckPrototypeDefinition
+   /module/CheckStructHasMember
+   /module/CheckSymbolExists
+   /module/CheckTypeSize
+   /module/CheckVariableExists
+   /module/CMakeAddFortranSubdirectory
+   /module/CMakeBackwardCompatibilityCXX
+   /module/CMakeDependentOption
+   /module/CMakeDetermineVSServicePack
+   /module/CMakeExpandImportedTargets
+   /module/CMakeFindDependencyMacro
+   /module/CMakeFindFrameworks
+   /module/CMakeFindPackageMode
+   /module/CMakeForceCompiler
+   /module/CMakeGraphVizOptions
+   /module/CMakePackageConfigHelpers
+   /module/CMakeParseArguments
+   /module/CMakePrintHelpers
+   /module/CMakePrintSystemInformation
+   /module/CMakePushCheckState
+   /module/CMakeVerifyManifest
+   /module/CPackArchive
+   /module/CPackBundle
+   /module/CPackComponent
+   /module/CPackCygwin
+   /module/CPackDeb
+   /module/CPackDMG
+   /module/CPackFreeBSD
+   /module/CPackIFW
+   /module/CPackIFWConfigureFile
+   /module/CPackNSIS
+   /module/CPackPackageMaker
+   /module/CPackProductBuild
+   /module/CPackRPM
+   /module/CPack
+   /module/CPackWIX
+   /module/CSharpUtilities
+   /module/CTest
+   /module/CTestCoverageCollectGCOV
+   /module/CTestScriptMode
+   /module/CTestUseLaunchers
+   /module/Dart
+   /module/DeployQt4
+   /module/Documentation
+   /module/ExternalData
+   /module/ExternalProject
+   /module/FeatureSummary
+   /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/FindCUDA
+   /module/FindCups
+   /module/FindCURL
+   /module/FindCurses
+   /module/FindCVS
+   /module/FindCxxTest
+   /module/FindCygwin
+   /module/FindDart
+   /module/FindDCMTK
+   /module/FindDevIL
+   /module/FindDoxygen
+   /module/FindEXPAT
+   /module/FindFLEX
+   /module/FindFLTK2
+   /module/FindFLTK
+   /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/FindIntl
+   /module/FindITK
+   /module/FindJasper
+   /module/FindJava
+   /module/FindJNI
+   /module/FindJPEG
+   /module/FindKDE3
+   /module/FindKDE4
+   /module/FindLAPACK
+   /module/FindLATEX
+   /module/FindLibArchive
+   /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/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/FindPackageHandleStandardArgs
+   /module/FindPackageMessage
+   /module/FindPatch
+   /module/FindPerlLibs
+   /module/FindPerl
+   /module/FindPHP4
+   /module/FindPhysFS
+   /module/FindPike
+   /module/FindPkgConfig
+   /module/FindPNG
+   /module/FindPostgreSQL
+   /module/FindProducer
+   /module/FindProtobuf
+   /module/FindPythonInterp
+   /module/FindPythonLibs
+   /module/FindQt3
+   /module/FindQt4
+   /module/FindQt
+   /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/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/FindwxWindows
+   /module/FindXCTest
+   /module/FindXalanC
+   /module/FindXercesC
+   /module/FindX11
+   /module/FindXMLRPC
+   /module/FindZLIB
+   /module/FortranCInterface
+   /module/GenerateExportHeader
+   /module/GetPrerequisites
+   /module/GNUInstallDirs
+   /module/GoogleTest
+   /module/InstallRequiredSystemLibraries
+   /module/MacroAddFileDependencies
+   /module/ProcessorCount
+   /module/SelectLibraryConfigurations
+   /module/SquishTestScript
+   /module/TestBigEndian
+   /module/TestCXXAcceptsFlag
+   /module/TestForANSIForScope
+   /module/TestForANSIStreamHeaders
+   /module/TestForSSTREAM
+   /module/TestForSTDNamespace
+   /module/UseEcos
+   /module/UseJavaClassFilelist
+   /module/UseJava
+   /module/UseJavaSymlinks
+   /module/UsePkgConfig
+   /module/UseSWIG
+   /module/UsewxWidgets
+   /module/Use_wxWindows
+   /module/WriteBasicConfigVersionFile
+   /module/WriteCompilerDetectionHeader
diff --git a/share/cmake-3.10/Help/manual/cmake-packages.7.rst b/share/cmake-3.10/Help/manual/cmake-packages.7.rst
new file mode 100644
index 0000000..c9442bc
--- /dev/null
+++ b/share/cmake-3.10/Help/manual/cmake-packages.7.rst
@@ -0,0 +1,709 @@
+.. 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 ``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 ``<Package>_FOUND``
+variable is set to true or false, depending on whether the package was
+found.  The ``<Package>_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 ``<Package>_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 ``<Package>_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 <package> name
+
+``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:
+
+``<package>_VERSION``
+ Full provided version string
+
+``<package>_VERSION_MAJOR``
+ Major version if provided, else 0
+
+``<package>_VERSION_MINOR``
+ Minor version if provided, else 0
+
+``<package>_VERSION_PATCH``
+ Patch version if provided, else 0
+
+``<package>_VERSION_TWEAK``
+ Tweak version if provided, else 0
+
+``<package>_VERSION_COUNT``
+ Number of version components, 0 to 4
+
+The variables report the version of the package that was actually found.
+The ``<package>`` 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 ``<Package>_VERSION``, ``<Package>_VERSION_MAJOR``,
+``<Package>_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 ``<Package>_FIND_COMPONENTS`` variable. If a particular
+component is non-optional, then the ``<Package>_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`_ (``<package>Config.cmake``) and optionally a
+`Package Version File`_ (``<package>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 ``<package>`` may appear under registry key::
+
+  HKEY_CURRENT_USER\Software\Kitware\CMake\Packages\<package>
+
+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 ``<package>`` may appear under
+the directory::
+
+  ~/.cmake/packages/<package>
+
+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 ``<package>`` may appear under
+registry key::
+
+  HKEY_LOCAL_MACHINE\Software\Kitware\CMake\Packages\<package>
+
+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:
+
+ * :variable:`CMAKE_EXPORT_NO_PACKAGE_REGISTRY` disables the
+   :command:`export(PACKAGE)` command.
+ * :variable:`CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY` disables the
+   User Package Registry in all the :command:`find_package` calls.
+ * :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.10/Help/manual/cmake-policies.7.rst b/share/cmake-3.10/Help/manual/cmake-policies.7.rst
new file mode 100644
index 0000000..c81ba59
--- /dev/null
+++ b/share/cmake-3.10/Help/manual/cmake-policies.7.rst
@@ -0,0 +1,201 @@
+.. 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.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.10/Help/manual/cmake-properties.7.rst b/share/cmake-3.10/Help/manual/cmake-properties.7.rst
new file mode 100644
index 0000000..dd59a00
--- /dev/null
+++ b/share/cmake-3.10/Help/manual/cmake-properties.7.rst
@@ -0,0 +1,464 @@
+.. 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_CXX_KNOWN_FEATURES
+   /prop_gbl/DEBUG_CONFIGURATIONS
+   /prop_gbl/DISABLED_FEATURES
+   /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/PACKAGES_FOUND
+   /prop_gbl/PACKAGES_NOT_FOUND
+   /prop_gbl/JOB_POOLS
+   /prop_gbl/PREDEFINED_TARGETS_FOLDER
+   /prop_gbl/ECLIPSE_EXTRA_NATURES
+   /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_MAKE_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/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/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/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_TARGET_DEPENDS
+   /prop_tgt/AUTOMOC_COMPILER_PREDEFINES
+   /prop_tgt/AUTOMOC_DEPEND_FILTERS
+   /prop_tgt/AUTOMOC_MACRO_NAMES
+   /prop_tgt/AUTOMOC_MOC_OPTIONS
+   /prop_tgt/AUTOMOC
+   /prop_tgt/AUTOUIC
+   /prop_tgt/AUTOUIC_OPTIONS
+   /prop_tgt/AUTOUIC_SEARCH_PATHS
+   /prop_tgt/AUTORCC
+   /prop_tgt/AUTORCC_OPTIONS
+   /prop_tgt/BINARY_DIR
+   /prop_tgt/BUILD_RPATH
+   /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/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_PTX_COMPILATION
+   /prop_tgt/CUDA_SEPARABLE_COMPILATION
+   /prop_tgt/CUDA_RESOLVE_DEVICE_SYMBOLS
+   /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/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/FOLDER
+   /prop_tgt/Fortran_FORMAT
+   /prop_tgt/Fortran_MODULE_DIRECTORY
+   /prop_tgt/FRAMEWORK
+   /prop_tgt/FRAMEWORK_VERSION
+   /prop_tgt/GENERATOR_FILE_NAME
+   /prop_tgt/GNUtoMS
+   /prop_tgt/HAS_CXX
+   /prop_tgt/IMPLICIT_DEPENDS_INCLUDE_TRANSFORM
+   /prop_tgt/IMPORTED_CONFIGURATIONS
+   /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_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_LIBRARIES
+   /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/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_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_SEARCH_END_STATIC
+   /prop_tgt/LINK_SEARCH_START_STATIC
+   /prop_tgt/LINK_WHAT_YOU_USE
+   /prop_tgt/LOCATION_CONFIG
+   /prop_tgt/LOCATION
+   /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/NAME
+   /prop_tgt/NO_SONAME
+   /prop_tgt/NO_SYSTEM_FROM_IMPORTED
+   /prop_tgt/OSX_ARCHITECTURES_CONFIG
+   /prop_tgt/OSX_ARCHITECTURES
+   /prop_tgt/OUTPUT_NAME_CONFIG
+   /prop_tgt/OUTPUT_NAME
+   /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/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/SUFFIX
+   /prop_tgt/TYPE
+   /prop_tgt/VERSION
+   /prop_tgt/VISIBILITY_INLINES_HIDDEN
+   /prop_tgt/VS_CONFIGURATION_TYPE
+   /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_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_KEYWORD
+   /prop_tgt/VS_MOBILE_EXTENSIONS_VERSION
+   /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_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_PRODUCT_TYPE
+   /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/PROCESSORS
+   /prop_test/REQUIRED_FILES
+   /prop_test/RESOURCE_LOCK
+   /prop_test/RUN_SERIAL
+   /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/AUTOUIC_OPTIONS
+   /prop_sf/AUTORCC_OPTIONS
+   /prop_sf/COMPILE_DEFINITIONS
+   /prop_sf/COMPILE_FLAGS
+   /prop_sf/EXTERNAL_OBJECT
+   /prop_sf/Fortran_FORMAT
+   /prop_sf/GENERATED
+   /prop_sf/HEADER_FILE_ONLY
+   /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/SYMBOLIC
+   /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_SHADER_ENTRYPOINT
+   /prop_sf/VS_SHADER_FLAGS
+   /prop_sf/VS_SHADER_MODEL
+   /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/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.10/Help/manual/cmake-qt.7.rst b/share/cmake-3.10/Help/manual/cmake-qt.7.rst
new file mode 100644
index 0000000..cafeae1
--- /dev/null
+++ b/share/cmake-3.10/Help/manual/cmake-qt.7.rst
@@ -0,0 +1,252 @@
+.. 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 filesystem 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.
+
+The tools are executed as part of a synthesized custom target generated by
+CMake.  Target dependencies may be added to that custom target by adding them
+to the :prop_tgt:`AUTOGEN_TARGET_DEPENDS` target property.
+
+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`.
+
+Visual Studio Generators
+========================
+
+When using the :manual:`Visual Studio generators <cmake-generators(7)>`
+CMake tries to use a ``PRE_BUILD``
+:command:`custom command <add_custom_command>` instead
+of a :command:`custom target <add_custom_target>` for autogen.
+``PRE_BUILD`` can't be used when the autogen target depends on files.
+This happens when
+
+- :prop_tgt:`AUTOMOC` or :prop_tgt:`AUTOUIC` is enabled and the origin target
+  depends on :prop_sf:`GENERATED` files which aren't excluded from autogen by
+  :prop_sf:`SKIP_AUTOMOC`, :prop_sf:`SKIP_AUTOUIC`, :prop_sf:`SKIP_AUTOGEN`
+  or :policy:`CMP0071`
+- :prop_tgt:`AUTORCC` is enabled and a ``.qrc`` file is listed in
+  the origin target sources
+- :prop_tgt:`AUTOGEN_TARGET_DEPENDS` lists a source file
+
+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.10/Help/manual/cmake-server.7.rst b/share/cmake-3.10/Help/manual/cmake-server.7.rst
new file mode 100644
index 0000000..50a90ee
--- /dev/null
+++ b/share/cmake-3.10/Help/manual/cmake-server.7.rst
@@ -0,0 +1,681 @@
+.. cmake-manual-description: CMake Server
+
+cmake-server(7)
+***************
+
+.. only:: html
+
+   .. contents::
+
+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).
+
+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 progess.
+
+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.
+
+If the build directory already contains a CMake cache, it is sufficient to set
+the "buildDirectory" attribute. To create a fresh build directory, additional
+attributes are required depending on the protocol 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)
+
+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.
+"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.
+"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 "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.10/Help/manual/cmake-toolchains.7.rst b/share/cmake-3.10/Help/manual/cmake-toolchains.7.rst
new file mode 100644
index 0000000..8554e87
--- /dev/null
+++ b/share/cmake-3.10/Help/manual/cmake-toolchains.7.rst
@@ -0,0 +1,524 @@
+.. 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.
+
+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})
+
+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`
+  Set 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`
diff --git a/share/cmake-3.10/Help/manual/cmake-variables.7.rst b/share/cmake-3.10/Help/manual/cmake-variables.7.rst
new file mode 100644
index 0000000..2e369e3
--- /dev/null
+++ b/share/cmake-3.10/Help/manual/cmake-variables.7.rst
@@ -0,0 +1,531 @@
+.. cmake-manual-description: CMake Variables Reference
+
+cmake-variables(7)
+******************
+
+.. only:: html
+
+   .. contents::
+
+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_CROSSCOMPILING
+   /variable/CMAKE_CROSSCOMPILING_EMULATOR
+   /variable/CMAKE_CTEST_COMMAND
+   /variable/CMAKE_CURRENT_BINARY_DIR
+   /variable/CMAKE_CURRENT_LIST_DIR
+   /variable/CMAKE_CURRENT_LIST_FILE
+   /variable/CMAKE_CURRENT_LIST_LINE
+   /variable/CMAKE_CURRENT_SOURCE_DIR
+   /variable/CMAKE_DIRECTORY_LABELS
+   /variable/CMAKE_DL_LIBS
+   /variable/CMAKE_EDIT_COMMAND
+   /variable/CMAKE_EXECUTABLE_SUFFIX
+   /variable/CMAKE_EXTRA_GENERATOR
+   /variable/CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES
+   /variable/CMAKE_FIND_PACKAGE_NAME
+   /variable/CMAKE_FIND_PACKAGE_SORT_DIRECTION
+   /variable/CMAKE_FIND_PACKAGE_SORT_ORDER
+   /variable/CMAKE_GENERATOR
+   /variable/CMAKE_GENERATOR_PLATFORM
+   /variable/CMAKE_GENERATOR_TOOLSET
+   /variable/CMAKE_HOME_DIRECTORY
+   /variable/CMAKE_IMPORT_LIBRARY_PREFIX
+   /variable/CMAKE_IMPORT_LIBRARY_SUFFIX
+   /variable/CMAKE_JOB_POOL_COMPILE
+   /variable/CMAKE_JOB_POOL_LINK
+   /variable/CMAKE_LANG_COMPILER_AR
+   /variable/CMAKE_LANG_COMPILER_RANLIB
+   /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_PARENT_LIST_FILE
+   /variable/CMAKE_PATCH_VERSION
+   /variable/CMAKE_PROJECT_DESCRIPTION
+   /variable/CMAKE_PROJECT_NAME
+   /variable/CMAKE_RANLIB
+   /variable/CMAKE_ROOT
+   /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_TOOLCHAIN_FILE
+   /variable/CMAKE_TWEAK_VERSION
+   /variable/CMAKE_VERBOSE_MAKEFILE
+   /variable/CMAKE_VERSION
+   /variable/CMAKE_VS_DEVENV_COMMAND
+   /variable/CMAKE_VS_INTEL_Fortran_PROJECT_VERSION
+   /variable/CMAKE_VS_MSBUILD_COMMAND
+   /variable/CMAKE_VS_NsightTegra_VERSION
+   /variable/CMAKE_VS_PLATFORM_NAME
+   /variable/CMAKE_VS_PLATFORM_TOOLSET
+   /variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA
+   /variable/CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE
+   /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_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_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_EXCLUDE_EXTERNAL_FILES
+   /variable/CMAKE_CODELITE_USE_TARGETS
+   /variable/CMAKE_COLOR_MAKEFILE
+   /variable/CMAKE_CONFIGURATION_TYPES
+   /variable/CMAKE_DEBUG_TARGET_PROPERTIES
+   /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_VERSION
+   /variable/CMAKE_ERROR_DEPRECATED
+   /variable/CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION
+   /variable/CMAKE_EXPORT_COMPILE_COMMANDS
+   /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_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_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_MESSAGE
+   /variable/CMAKE_INSTALL_PREFIX
+   /variable/CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT
+   /variable/CMAKE_LIBRARY_PATH
+   /variable/CMAKE_MFC_FLAG
+   /variable/CMAKE_MODULE_PATH
+   /variable/CMAKE_NOT_USING_CONFIG_FLAGS
+   /variable/CMAKE_POLICY_DEFAULT_CMPNNNN
+   /variable/CMAKE_POLICY_WARNING_CMPNNNN
+   /variable/CMAKE_PREFIX_PATH
+   /variable/CMAKE_PROGRAM_PATH
+   /variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE
+   /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_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
+
+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/ENV
+   /variable/GHS-MULTI
+   /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_VERSION
+   /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_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_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_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_AUTOMOC
+   /variable/CMAKE_AUTOMOC_COMPILER_PREDEFINES
+   /variable/CMAKE_AUTOMOC_DEPEND_FILTERS
+   /variable/CMAKE_AUTOMOC_MACRO_NAMES
+   /variable/CMAKE_AUTOMOC_MOC_OPTIONS
+   /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_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_DEBUG_POSTFIX
+   /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_Fortran_FORMAT
+   /variable/CMAKE_Fortran_MODULE_DIRECTORY
+   /variable/CMAKE_GNUtoMS
+   /variable/CMAKE_INCLUDE_CURRENT_DIR
+   /variable/CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE
+   /variable/CMAKE_INSTALL_NAME_DIR
+   /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_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_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_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_USE_RELATIVE_PATHS
+   /variable/CMAKE_VISIBILITY_INLINES_HIDDEN
+   /variable/CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD
+   /variable/CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD
+   /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_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_INTERNAL_PLATFORM_ABI
+   /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_ABI
+   /variable/CMAKE_LANG_COMPILER_ARCHITECTURE_ID
+   /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_COMPILER_VERSION_INTERNAL
+   /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_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_GHS_KERNEL_FLAGS_DEBUG
+   /variable/CMAKE_LANG_GHS_KERNEL_FLAGS_MINSIZEREL
+   /variable/CMAKE_LANG_GHS_KERNEL_FLAGS_RELEASE
+   /variable/CMAKE_LANG_GHS_KERNEL_FLAGS_RELWITHDEBINFO
+   /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_LINK_EXECUTABLE
+   /variable/CMAKE_LANG_OUTPUT_EXTENSION
+   /variable/CMAKE_LANG_PLATFORM_ID
+   /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_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_TEST_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_SCP_COMMAND
+   /variable/CTEST_SITE
+   /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_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_SCRIPT
+   /variable/CPACK_PACKAGING_INSTALL_PREFIX
+   /variable/CPACK_SET_DESTDIR
+   /variable/CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION
diff --git a/share/cmake-3.10/Help/manual/cmake.1.rst b/share/cmake-3.10/Help/manual/cmake.1.rst
new file mode 100644
index 0000000..6a21683
--- /dev/null
+++ b/share/cmake-3.10/Help/manual/cmake.1.rst
@@ -0,0 +1,395 @@
+.. cmake-manual-description: CMake Command-Line Reference
+
+cmake(1)
+********
+
+Synopsis
+========
+
+.. parsed-literal::
+
+ cmake [<options>] (<path-to-source> | <path-to-existing-build>)
+ cmake [(-D <var>=<value>)...] -P <cmake-script-file>
+ cmake --build <dir> [<options>...] [-- <build-tool-options>...]
+ cmake -E <command> [<options>...]
+ cmake --find-package <options>...
+
+Description
+===========
+
+The "cmake" executable is the CMake command-line interface.  It may be
+used to configure projects in scripts.  Project configuration settings
+may be specified on the command line with the -D option.
+
+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.
+
+.. _`CMake Options`:
+
+Options
+=======
+
+.. include:: OPTIONS_BUILD.txt
+
+``-E <command> [<options>...]``
+ See `Command-Line Tool Mode`_.
+
+``-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 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.
+
+``--build <dir>``
+ See `Build Tool Mode`_.
+
+``-N``
+ View mode only.
+
+ Only load the cache.  Do not actually run configure and generate
+ steps.
+
+``-P <file>``
+ Process script mode.
+
+ 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.
+
+``--find-package``
+ See `Find-Package Tool Mode`_.
+
+``--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.
+
+``--debug-trycompile``
+ Do not delete the try_compile build tree. Only useful on one try_compile at a time.
+
+ Do not delete the files and directories created for 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
+ message(send_error ) calls.
+
+``--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-source=<file>``
+ Put cmake in trace mode, but output only lines of a specified file.
+
+ Multiple options are allowed.
+
+``--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 CMAKE_SOURCE_DIR and CMAKE_BINARY_DIR.  This flag tells CMake to
+ warn about other files as well.
+
+.. include:: OPTIONS_HELP.txt
+
+.. _`Build Tool Mode`:
+
+Build Tool Mode
+===============
+
+CMake provides a command-line signature to build an already-generated
+project binary tree::
+
+ 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.
+
+``--target <tgt>``
+  Build ``<tgt>`` instead of default targets.  May only be specified once.
+
+``--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.
+
+``--``
+  Pass remaining options to the native tool.
+
+Run ``cmake --build`` with no options for quick help.
+
+Command-Line Tool Mode
+======================
+
+CMake provides builtin command-line tools through the signature::
+
+ 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.
+
+  ``serverMode``
+    ``true`` if cmake supports server-mode and ``false`` otherwise.
+
+``chdir <dir> <cmd> [<arg>...]``
+  Change the current working directory and run a command.
+
+``compare_files <file1> <file2>``
+  Check if ``<file1>`` is same as ``<file2>``. If files are the same,
+  then returns 0, if not it returns 1.
+
+``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_directory <dir>... <destination>``
+  Copy directories to ``<destination>`` directory.
+  If ``<destination>`` directory does not exist it will be created.
+
+``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.
+
+``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.
+
+``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>...``
+  Remove the file(s). 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_directory <dir>``
+  Remove a directory and its contents.  If a directory does
+  not exist it will be silently ignored.
+
+``rename <oldname> <newname>``
+  Rename a file or directory (on one volume).
+
+``server``
+  Launch :manual:`cmake-server(7)` mode.
+
+``sleep <number>...``
+  Sleep for given number of seconds.
+
+``tar [cxt][vf][zjJ] file.tar [<options>...] [--] [<file>...]``
+  Create or extract a tar or zip archive.  Options are:
+
+  ``--``
+    Stop interpreting options and treat all remaining arguments
+    as file names even if they start in ``-``.
+  ``--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 ``-``.
+  ``--mtime=<date>``
+    Specify modification time recorded in tarball entries.
+  ``--format=<format>``
+    Specify the format of the archive to be created.
+    Supported formats are: ``7zip``, ``gnutar``, ``pax``,
+    ``paxr`` (restricted pax, default), and ``zip``.
+
+``time <command> [<args>...]``
+  Run command and return elapsed time.
+
+``touch <file>``
+  Touch a file.
+
+``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.
+
+UNIX-specific Command-Line Tools
+--------------------------------
+
+The following ``cmake -E`` commands are available only on UNIX:
+
+``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.
+
+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.
+
+Find-Package Tool Mode
+======================
+
+CMake provides a helper for Makefile-based projects with the signature::
+
+  cmake --find-package <options>...
+
+This runs in a pkg-config like mode.
+
+Search a package using :command:`find_package()` and print the resulting flags
+to stdout.  This can be used to use cmake 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.
+
+See Also
+========
+
+.. include:: LINKS.txt
diff --git a/share/cmake-3.6/Help/manual/cpack.1.rst b/share/cmake-3.10/Help/manual/cpack.1.rst
similarity index 100%
rename from share/cmake-3.6/Help/manual/cpack.1.rst
rename to share/cmake-3.10/Help/manual/cpack.1.rst
diff --git a/share/cmake-3.10/Help/manual/ctest.1.rst b/share/cmake-3.10/Help/manual/ctest.1.rst
new file mode 100644
index 0000000..423f1ca
--- /dev/null
+++ b/share/cmake-3.10/Help/manual/ctest.1.rst
@@ -0,0 +1,1084 @@
+.. cmake-manual-description: CTest Command-Line Reference
+
+ctest(1)
+********
+
+Synopsis
+========
+
+.. parsed-literal::
+
+ ctest [<options>]
+
+Description
+===========
+
+The "ctest" executable is the CMake test driver program.
+CMake-generated build trees created for projects that use the
+ENABLE_TESTING and 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".
+
+``-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 environment variable
+ ``CTEST_OUTPUT_ON_FAILURE``.
+
+``-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
+ environment variable ``CTEST_PARALLEL_LEVEL``.
+
+``--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 log file.
+
+``-N,--show-only``
+ 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.
+
+``-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.
+
+``-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``.
+
+``-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``.
+
+``--track <track>``
+ Specify the track to submit dashboard to
+
+ Submit dashboard to specified track instead of default one.  By
+ default, the dashboard is submitted to Nightly, Experimental, or
+ Continuous track, but by specifying this option, the track can be
+ arbitrary.
+
+``-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.
+
+``-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.
+
+``-A <file>, --add-notes <file>``
+ Add a notes file with submission.
+
+ This option tells ctest to include a notes file when submitting
+ dashboard.
+
+``-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-until-fail <n>``
+ Require each test to run ``<n>`` times without failing in order to pass.
+
+ This is useful in finding sporadic failures in test cases.
+
+``--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.
+
+ ``--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.
+
+``--build-and-test <path-to-source> <path-to-build>``
+ Configure, build and run a test.
+
+ This option tells ctest to configure (i.e.  run cmake on), build,
+ and or execute a test.  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 are ``--build-target``, ``--build-nocmake``, ``--build-run-dir``,
+ ``--build-two-config``, ``--build-exe-dir``,
+ ``--build-project``, ``--build-noclean`` and ``--build-options``.
+
+``--build-target``
+ Specify a specific target to build.
+
+ This option goes with the ``--build-and-test`` option, 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``
+ Override the make program chosen by CTest with a given one.
+
+``--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``
+ Add extra options to the build step.
+
+ This option must be the last option with the exception of
+ ``--test-command``
+
+``--test-command``
+ The test to run with the ``--build-and-test`` option.
+
+``--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.
+
+``--test-timeout``
+ The time limit in seconds, internal use only.
+
+``--tomorrow-tag``
+ Nightly or experimental starts with next day tag.
+
+ This is useful if the build will not finish in one day.
+
+``--ctest-config``
+ The configuration file used to initialize CTest state when submitting dashboards.
+
+ This option tells CTest to use different initialization file instead
+ of CTestConfiguration.tcl.  This way multiple initialization files
+ can be used for example to submit to multiple dashboards.
+
+``--overwrite``
+ Overwrite CTest configuration option.
+
+ By default ctest uses configuration options from configuration file.
+ This option will overwrite the configuration option.
+
+``--extra-submit <file>[;<file>]``
+ Submit extra files to the dashboard.
+
+ This option will submit extra files to the dashboard.
+
+``--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 a global timeout on all tests.
+
+ This option will set a global timeout on all tests that do not
+ already have a timeout set on them.
+
+``--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.
+
+``--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.
+
+``--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.
+
+.. include:: OPTIONS_HELP.txt
+
+.. _`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.
+
+.. _`CDash`: http://cdash.org/
+
+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 moficiations 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``
+  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`
+
+
+
+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``
+
+
+.. _`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 ``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``
+
+``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:
+
+``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``
+
+
+``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``
+
+.. _`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``
+  Specify the version of `CDash`_ on the server.
+
+  * `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``
+  The path on the dashboard server to send the submission.
+
+  * `CTest Script`_ variable: :variable:`CTEST_DROP_LOCATION`
+  * :module:`CTest` module variable: ``DROP_LOCATION`` if set,
+    else ``CTEST_DROP_LOCATION``
+
+``DropMethod``
+  Specify the method by which results should be submitted to the
+  dashboard server.  The value may be ``cp``, ``ftp``, ``http``,
+  ``https``, ``scp``, or ``xmlrpc`` (if CMake was built with
+  support for it).
+
+  * `CTest Script`_ variable: :variable:`CTEST_DROP_METHOD`
+  * :module:`CTest` module variable: ``DROP_METHOD`` if set,
+    else ``CTEST_DROP_METHOD``
+
+``DropSite``
+  The dashboard server name
+  (for ``ftp``, ``http``, and ``https``, ``scp``, and ``xmlrpc``).
+
+  * `CTest Script`_ variable: :variable:`CTEST_DROP_SITE`
+  * :module:`CTest` module variable: ``DROP_SITE`` if set,
+    else ``CTEST_DROP_SITE``
+
+``DropSitePassword``
+  The dashboard server login password, if any
+  (for ``ftp``, ``http``, and ``https``).
+
+  * `CTest Script`_ variable: :variable:`CTEST_DROP_SITE_PASSWORD`
+  * :module:`CTest` module variable: ``DROP_SITE_PASSWORD`` if set,
+    else ``CTEST_DROP_SITE_PASWORD``
+
+``DropSiteUser``
+  The dashboard server login user name, if any
+  (for ``ftp``, ``http``, and ``https``).
+
+  * `CTest Script`_ variable: :variable:`CTEST_DROP_SITE_USER`
+  * :module:`CTest` module variable: ``DROP_SITE_USER`` if set,
+    else ``CTEST_DROP_SITE_USER``
+
+``IsCDash``
+  Specify whether the dashboard server is `CDash`_ or an older
+  dashboard server implementation requiring ``TriggerSite``.
+
+  * `CTest Script`_ variable: :variable:`CTEST_DROP_SITE_CDASH`
+  * :module:`CTest` module variable: ``CTEST_DROP_SITE_CDASH``
+
+``ScpCommand``
+  ``scp`` command-line tool to use when ``DropMethod`` is ``scp``.
+
+  * `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
+
+``TriggerSite``
+  Legacy option to support older dashboard server implementations.
+  Not used when ``IsCDash`` is true.
+
+  * `CTest Script`_ variable: :variable:`CTEST_TRIGGER_SITE`
+  * :module:`CTest` module variable: ``TRIGGER_SITE`` if set,
+    else ``CTEST_TRIGGER_SITE``
+
+See Also
+========
+
+.. include:: LINKS.txt
diff --git a/share/cmake-3.6/Help/module/AddFileDependencies.rst b/share/cmake-3.10/Help/module/AddFileDependencies.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/AddFileDependencies.rst
rename to share/cmake-3.10/Help/module/AddFileDependencies.rst
diff --git a/share/cmake-3.10/Help/module/AndroidTestUtilities.rst b/share/cmake-3.10/Help/module/AndroidTestUtilities.rst
new file mode 100644
index 0000000..e7ec864
--- /dev/null
+++ b/share/cmake-3.10/Help/module/AndroidTestUtilities.rst
@@ -0,0 +1 @@
+.. cmake-module:: ../../Modules/AndroidTestUtilities.cmake
diff --git a/share/cmake-3.6/Help/module/BundleUtilities.rst b/share/cmake-3.10/Help/module/BundleUtilities.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/BundleUtilities.rst
rename to share/cmake-3.10/Help/module/BundleUtilities.rst
diff --git a/share/cmake-3.6/Help/module/CMakeAddFortranSubdirectory.rst b/share/cmake-3.10/Help/module/CMakeAddFortranSubdirectory.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CMakeAddFortranSubdirectory.rst
rename to share/cmake-3.10/Help/module/CMakeAddFortranSubdirectory.rst
diff --git a/share/cmake-3.6/Help/module/CMakeBackwardCompatibilityCXX.rst b/share/cmake-3.10/Help/module/CMakeBackwardCompatibilityCXX.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CMakeBackwardCompatibilityCXX.rst
rename to share/cmake-3.10/Help/module/CMakeBackwardCompatibilityCXX.rst
diff --git a/share/cmake-3.6/Help/module/CMakeDependentOption.rst b/share/cmake-3.10/Help/module/CMakeDependentOption.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CMakeDependentOption.rst
rename to share/cmake-3.10/Help/module/CMakeDependentOption.rst
diff --git a/share/cmake-3.6/Help/module/CMakeDetermineVSServicePack.rst b/share/cmake-3.10/Help/module/CMakeDetermineVSServicePack.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CMakeDetermineVSServicePack.rst
rename to share/cmake-3.10/Help/module/CMakeDetermineVSServicePack.rst
diff --git a/share/cmake-3.6/Help/module/CMakeExpandImportedTargets.rst b/share/cmake-3.10/Help/module/CMakeExpandImportedTargets.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CMakeExpandImportedTargets.rst
rename to share/cmake-3.10/Help/module/CMakeExpandImportedTargets.rst
diff --git a/share/cmake-3.6/Help/module/CMakeFindDependencyMacro.rst b/share/cmake-3.10/Help/module/CMakeFindDependencyMacro.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CMakeFindDependencyMacro.rst
rename to share/cmake-3.10/Help/module/CMakeFindDependencyMacro.rst
diff --git a/share/cmake-3.6/Help/module/CMakeFindFrameworks.rst b/share/cmake-3.10/Help/module/CMakeFindFrameworks.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CMakeFindFrameworks.rst
rename to share/cmake-3.10/Help/module/CMakeFindFrameworks.rst
diff --git a/share/cmake-3.6/Help/module/CMakeFindPackageMode.rst b/share/cmake-3.10/Help/module/CMakeFindPackageMode.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CMakeFindPackageMode.rst
rename to share/cmake-3.10/Help/module/CMakeFindPackageMode.rst
diff --git a/share/cmake-3.6/Help/module/CMakeForceCompiler.rst b/share/cmake-3.10/Help/module/CMakeForceCompiler.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CMakeForceCompiler.rst
rename to share/cmake-3.10/Help/module/CMakeForceCompiler.rst
diff --git a/share/cmake-3.6/Help/module/CMakeGraphVizOptions.rst b/share/cmake-3.10/Help/module/CMakeGraphVizOptions.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CMakeGraphVizOptions.rst
rename to share/cmake-3.10/Help/module/CMakeGraphVizOptions.rst
diff --git a/share/cmake-3.6/Help/module/CMakePackageConfigHelpers.rst b/share/cmake-3.10/Help/module/CMakePackageConfigHelpers.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CMakePackageConfigHelpers.rst
rename to share/cmake-3.10/Help/module/CMakePackageConfigHelpers.rst
diff --git a/share/cmake-3.6/Help/module/CMakeParseArguments.rst b/share/cmake-3.10/Help/module/CMakeParseArguments.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CMakeParseArguments.rst
rename to share/cmake-3.10/Help/module/CMakeParseArguments.rst
diff --git a/share/cmake-3.6/Help/module/CMakePrintHelpers.rst b/share/cmake-3.10/Help/module/CMakePrintHelpers.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CMakePrintHelpers.rst
rename to share/cmake-3.10/Help/module/CMakePrintHelpers.rst
diff --git a/share/cmake-3.6/Help/module/CMakePrintSystemInformation.rst b/share/cmake-3.10/Help/module/CMakePrintSystemInformation.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CMakePrintSystemInformation.rst
rename to share/cmake-3.10/Help/module/CMakePrintSystemInformation.rst
diff --git a/share/cmake-3.6/Help/module/CMakePushCheckState.rst b/share/cmake-3.10/Help/module/CMakePushCheckState.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CMakePushCheckState.rst
rename to share/cmake-3.10/Help/module/CMakePushCheckState.rst
diff --git a/share/cmake-3.6/Help/module/CMakeVerifyManifest.rst b/share/cmake-3.10/Help/module/CMakeVerifyManifest.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CMakeVerifyManifest.rst
rename to share/cmake-3.10/Help/module/CMakeVerifyManifest.rst
diff --git a/share/cmake-3.6/Help/module/CPack.rst b/share/cmake-3.10/Help/module/CPack.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CPack.rst
rename to share/cmake-3.10/Help/module/CPack.rst
diff --git a/share/cmake-3.10/Help/module/CPackArchive.rst b/share/cmake-3.10/Help/module/CPackArchive.rst
new file mode 100644
index 0000000..eb8d9d2
--- /dev/null
+++ b/share/cmake-3.10/Help/module/CPackArchive.rst
@@ -0,0 +1 @@
+.. cmake-module:: ../../Modules/CPackArchive.cmake
diff --git a/share/cmake-3.6/Help/module/CPackBundle.rst b/share/cmake-3.10/Help/module/CPackBundle.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CPackBundle.rst
rename to share/cmake-3.10/Help/module/CPackBundle.rst
diff --git a/share/cmake-3.6/Help/module/CPackComponent.rst b/share/cmake-3.10/Help/module/CPackComponent.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CPackComponent.rst
rename to share/cmake-3.10/Help/module/CPackComponent.rst
diff --git a/share/cmake-3.6/Help/module/CPackCygwin.rst b/share/cmake-3.10/Help/module/CPackCygwin.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CPackCygwin.rst
rename to share/cmake-3.10/Help/module/CPackCygwin.rst
diff --git a/share/cmake-3.6/Help/module/CPackDMG.rst b/share/cmake-3.10/Help/module/CPackDMG.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CPackDMG.rst
rename to share/cmake-3.10/Help/module/CPackDMG.rst
diff --git a/share/cmake-3.6/Help/module/CPackDeb.rst b/share/cmake-3.10/Help/module/CPackDeb.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CPackDeb.rst
rename to share/cmake-3.10/Help/module/CPackDeb.rst
diff --git a/share/cmake-3.10/Help/module/CPackFreeBSD.rst b/share/cmake-3.10/Help/module/CPackFreeBSD.rst
new file mode 100644
index 0000000..083f0cb
--- /dev/null
+++ b/share/cmake-3.10/Help/module/CPackFreeBSD.rst
@@ -0,0 +1 @@
+.. cmake-module:: ../../Modules/CPackFreeBSD.cmake
diff --git a/share/cmake-3.6/Help/module/CPackIFW.rst b/share/cmake-3.10/Help/module/CPackIFW.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CPackIFW.rst
rename to share/cmake-3.10/Help/module/CPackIFW.rst
diff --git a/share/cmake-3.10/Help/module/CPackIFWConfigureFile.rst b/share/cmake-3.10/Help/module/CPackIFWConfigureFile.rst
new file mode 100644
index 0000000..e88517c
--- /dev/null
+++ b/share/cmake-3.10/Help/module/CPackIFWConfigureFile.rst
@@ -0,0 +1 @@
+.. cmake-module:: ../../Modules/CPackIFWConfigureFile.cmake
diff --git a/share/cmake-3.6/Help/module/CPackNSIS.rst b/share/cmake-3.10/Help/module/CPackNSIS.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CPackNSIS.rst
rename to share/cmake-3.10/Help/module/CPackNSIS.rst
diff --git a/share/cmake-3.6/Help/module/CPackPackageMaker.rst b/share/cmake-3.10/Help/module/CPackPackageMaker.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CPackPackageMaker.rst
rename to share/cmake-3.10/Help/module/CPackPackageMaker.rst
diff --git a/share/cmake-3.10/Help/module/CPackProductBuild.rst b/share/cmake-3.10/Help/module/CPackProductBuild.rst
new file mode 100644
index 0000000..6081fe4
--- /dev/null
+++ b/share/cmake-3.10/Help/module/CPackProductBuild.rst
@@ -0,0 +1 @@
+.. cmake-module:: ../../Modules/CPackProductBuild.cmake
diff --git a/share/cmake-3.6/Help/module/CPackRPM.rst b/share/cmake-3.10/Help/module/CPackRPM.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CPackRPM.rst
rename to share/cmake-3.10/Help/module/CPackRPM.rst
diff --git a/share/cmake-3.6/Help/module/CPackWIX.rst b/share/cmake-3.10/Help/module/CPackWIX.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CPackWIX.rst
rename to share/cmake-3.10/Help/module/CPackWIX.rst
diff --git a/share/cmake-3.10/Help/module/CSharpUtilities.rst b/share/cmake-3.10/Help/module/CSharpUtilities.rst
new file mode 100644
index 0000000..3621bbc
--- /dev/null
+++ b/share/cmake-3.10/Help/module/CSharpUtilities.rst
@@ -0,0 +1 @@
+.. cmake-module:: ../../Modules/CSharpUtilities.cmake
diff --git a/share/cmake-3.6/Help/module/CTest.rst b/share/cmake-3.10/Help/module/CTest.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CTest.rst
rename to share/cmake-3.10/Help/module/CTest.rst
diff --git a/share/cmake-3.6/Help/module/CTestCoverageCollectGCOV.rst b/share/cmake-3.10/Help/module/CTestCoverageCollectGCOV.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CTestCoverageCollectGCOV.rst
rename to share/cmake-3.10/Help/module/CTestCoverageCollectGCOV.rst
diff --git a/share/cmake-3.6/Help/module/CTestScriptMode.rst b/share/cmake-3.10/Help/module/CTestScriptMode.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CTestScriptMode.rst
rename to share/cmake-3.10/Help/module/CTestScriptMode.rst
diff --git a/share/cmake-3.6/Help/module/CTestUseLaunchers.rst b/share/cmake-3.10/Help/module/CTestUseLaunchers.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CTestUseLaunchers.rst
rename to share/cmake-3.10/Help/module/CTestUseLaunchers.rst
diff --git a/share/cmake-3.6/Help/module/CheckCCompilerFlag.rst b/share/cmake-3.10/Help/module/CheckCCompilerFlag.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CheckCCompilerFlag.rst
rename to share/cmake-3.10/Help/module/CheckCCompilerFlag.rst
diff --git a/share/cmake-3.6/Help/module/CheckCSourceCompiles.rst b/share/cmake-3.10/Help/module/CheckCSourceCompiles.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CheckCSourceCompiles.rst
rename to share/cmake-3.10/Help/module/CheckCSourceCompiles.rst
diff --git a/share/cmake-3.6/Help/module/CheckCSourceRuns.rst b/share/cmake-3.10/Help/module/CheckCSourceRuns.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CheckCSourceRuns.rst
rename to share/cmake-3.10/Help/module/CheckCSourceRuns.rst
diff --git a/share/cmake-3.6/Help/module/CheckCXXCompilerFlag.rst b/share/cmake-3.10/Help/module/CheckCXXCompilerFlag.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CheckCXXCompilerFlag.rst
rename to share/cmake-3.10/Help/module/CheckCXXCompilerFlag.rst
diff --git a/share/cmake-3.6/Help/module/CheckCXXSourceCompiles.rst b/share/cmake-3.10/Help/module/CheckCXXSourceCompiles.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CheckCXXSourceCompiles.rst
rename to share/cmake-3.10/Help/module/CheckCXXSourceCompiles.rst
diff --git a/share/cmake-3.6/Help/module/CheckCXXSourceRuns.rst b/share/cmake-3.10/Help/module/CheckCXXSourceRuns.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CheckCXXSourceRuns.rst
rename to share/cmake-3.10/Help/module/CheckCXXSourceRuns.rst
diff --git a/share/cmake-3.6/Help/module/CheckCXXSymbolExists.rst b/share/cmake-3.10/Help/module/CheckCXXSymbolExists.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CheckCXXSymbolExists.rst
rename to share/cmake-3.10/Help/module/CheckCXXSymbolExists.rst
diff --git a/share/cmake-3.6/Help/module/CheckFortranCompilerFlag.rst b/share/cmake-3.10/Help/module/CheckFortranCompilerFlag.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CheckFortranCompilerFlag.rst
rename to share/cmake-3.10/Help/module/CheckFortranCompilerFlag.rst
diff --git a/share/cmake-3.6/Help/module/CheckFortranFunctionExists.rst b/share/cmake-3.10/Help/module/CheckFortranFunctionExists.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CheckFortranFunctionExists.rst
rename to share/cmake-3.10/Help/module/CheckFortranFunctionExists.rst
diff --git a/share/cmake-3.6/Help/module/CheckFortranSourceCompiles.rst b/share/cmake-3.10/Help/module/CheckFortranSourceCompiles.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CheckFortranSourceCompiles.rst
rename to share/cmake-3.10/Help/module/CheckFortranSourceCompiles.rst
diff --git a/share/cmake-3.6/Help/module/CheckFunctionExists.rst b/share/cmake-3.10/Help/module/CheckFunctionExists.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CheckFunctionExists.rst
rename to share/cmake-3.10/Help/module/CheckFunctionExists.rst
diff --git a/share/cmake-3.10/Help/module/CheckIPOSupported.rst b/share/cmake-3.10/Help/module/CheckIPOSupported.rst
new file mode 100644
index 0000000..9c8a77b
--- /dev/null
+++ b/share/cmake-3.10/Help/module/CheckIPOSupported.rst
@@ -0,0 +1 @@
+.. cmake-module:: ../../Modules/CheckIPOSupported.cmake
diff --git a/share/cmake-3.6/Help/module/CheckIncludeFile.rst b/share/cmake-3.10/Help/module/CheckIncludeFile.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CheckIncludeFile.rst
rename to share/cmake-3.10/Help/module/CheckIncludeFile.rst
diff --git a/share/cmake-3.6/Help/module/CheckIncludeFileCXX.rst b/share/cmake-3.10/Help/module/CheckIncludeFileCXX.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CheckIncludeFileCXX.rst
rename to share/cmake-3.10/Help/module/CheckIncludeFileCXX.rst
diff --git a/share/cmake-3.6/Help/module/CheckIncludeFiles.rst b/share/cmake-3.10/Help/module/CheckIncludeFiles.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CheckIncludeFiles.rst
rename to share/cmake-3.10/Help/module/CheckIncludeFiles.rst
diff --git a/share/cmake-3.6/Help/module/CheckLanguage.rst b/share/cmake-3.10/Help/module/CheckLanguage.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CheckLanguage.rst
rename to share/cmake-3.10/Help/module/CheckLanguage.rst
diff --git a/share/cmake-3.6/Help/module/CheckLibraryExists.rst b/share/cmake-3.10/Help/module/CheckLibraryExists.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CheckLibraryExists.rst
rename to share/cmake-3.10/Help/module/CheckLibraryExists.rst
diff --git a/share/cmake-3.6/Help/module/CheckPrototypeDefinition.rst b/share/cmake-3.10/Help/module/CheckPrototypeDefinition.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CheckPrototypeDefinition.rst
rename to share/cmake-3.10/Help/module/CheckPrototypeDefinition.rst
diff --git a/share/cmake-3.6/Help/module/CheckStructHasMember.rst b/share/cmake-3.10/Help/module/CheckStructHasMember.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CheckStructHasMember.rst
rename to share/cmake-3.10/Help/module/CheckStructHasMember.rst
diff --git a/share/cmake-3.6/Help/module/CheckSymbolExists.rst b/share/cmake-3.10/Help/module/CheckSymbolExists.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CheckSymbolExists.rst
rename to share/cmake-3.10/Help/module/CheckSymbolExists.rst
diff --git a/share/cmake-3.6/Help/module/CheckTypeSize.rst b/share/cmake-3.10/Help/module/CheckTypeSize.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CheckTypeSize.rst
rename to share/cmake-3.10/Help/module/CheckTypeSize.rst
diff --git a/share/cmake-3.6/Help/module/CheckVariableExists.rst b/share/cmake-3.10/Help/module/CheckVariableExists.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/CheckVariableExists.rst
rename to share/cmake-3.10/Help/module/CheckVariableExists.rst
diff --git a/share/cmake-3.6/Help/module/Dart.rst b/share/cmake-3.10/Help/module/Dart.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/Dart.rst
rename to share/cmake-3.10/Help/module/Dart.rst
diff --git a/share/cmake-3.6/Help/module/DeployQt4.rst b/share/cmake-3.10/Help/module/DeployQt4.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/DeployQt4.rst
rename to share/cmake-3.10/Help/module/DeployQt4.rst
diff --git a/share/cmake-3.6/Help/module/Documentation.rst b/share/cmake-3.10/Help/module/Documentation.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/Documentation.rst
rename to share/cmake-3.10/Help/module/Documentation.rst
diff --git a/share/cmake-3.6/Help/module/ExternalData.rst b/share/cmake-3.10/Help/module/ExternalData.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/ExternalData.rst
rename to share/cmake-3.10/Help/module/ExternalData.rst
diff --git a/share/cmake-3.6/Help/module/ExternalProject.rst b/share/cmake-3.10/Help/module/ExternalProject.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/ExternalProject.rst
rename to share/cmake-3.10/Help/module/ExternalProject.rst
diff --git a/share/cmake-3.6/Help/module/FeatureSummary.rst b/share/cmake-3.10/Help/module/FeatureSummary.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FeatureSummary.rst
rename to share/cmake-3.10/Help/module/FeatureSummary.rst
diff --git a/share/cmake-3.6/Help/module/FindALSA.rst b/share/cmake-3.10/Help/module/FindALSA.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindALSA.rst
rename to share/cmake-3.10/Help/module/FindALSA.rst
diff --git a/share/cmake-3.6/Help/module/FindASPELL.rst b/share/cmake-3.10/Help/module/FindASPELL.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindASPELL.rst
rename to share/cmake-3.10/Help/module/FindASPELL.rst
diff --git a/share/cmake-3.6/Help/module/FindAVIFile.rst b/share/cmake-3.10/Help/module/FindAVIFile.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindAVIFile.rst
rename to share/cmake-3.10/Help/module/FindAVIFile.rst
diff --git a/share/cmake-3.6/Help/module/FindArmadillo.rst b/share/cmake-3.10/Help/module/FindArmadillo.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindArmadillo.rst
rename to share/cmake-3.10/Help/module/FindArmadillo.rst
diff --git a/share/cmake-3.6/Help/module/FindBISON.rst b/share/cmake-3.10/Help/module/FindBISON.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindBISON.rst
rename to share/cmake-3.10/Help/module/FindBISON.rst
diff --git a/share/cmake-3.6/Help/module/FindBLAS.rst b/share/cmake-3.10/Help/module/FindBLAS.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindBLAS.rst
rename to share/cmake-3.10/Help/module/FindBLAS.rst
diff --git a/share/cmake-3.6/Help/module/FindBZip2.rst b/share/cmake-3.10/Help/module/FindBZip2.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindBZip2.rst
rename to share/cmake-3.10/Help/module/FindBZip2.rst
diff --git a/share/cmake-3.6/Help/module/FindBacktrace.rst b/share/cmake-3.10/Help/module/FindBacktrace.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindBacktrace.rst
rename to share/cmake-3.10/Help/module/FindBacktrace.rst
diff --git a/share/cmake-3.6/Help/module/FindBoost.rst b/share/cmake-3.10/Help/module/FindBoost.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindBoost.rst
rename to share/cmake-3.10/Help/module/FindBoost.rst
diff --git a/share/cmake-3.6/Help/module/FindBullet.rst b/share/cmake-3.10/Help/module/FindBullet.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindBullet.rst
rename to share/cmake-3.10/Help/module/FindBullet.rst
diff --git a/share/cmake-3.6/Help/module/FindCABLE.rst b/share/cmake-3.10/Help/module/FindCABLE.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindCABLE.rst
rename to share/cmake-3.10/Help/module/FindCABLE.rst
diff --git a/share/cmake-3.6/Help/module/FindCUDA.rst b/share/cmake-3.10/Help/module/FindCUDA.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindCUDA.rst
rename to share/cmake-3.10/Help/module/FindCUDA.rst
diff --git a/share/cmake-3.6/Help/module/FindCURL.rst b/share/cmake-3.10/Help/module/FindCURL.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindCURL.rst
rename to share/cmake-3.10/Help/module/FindCURL.rst
diff --git a/share/cmake-3.6/Help/module/FindCVS.rst b/share/cmake-3.10/Help/module/FindCVS.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindCVS.rst
rename to share/cmake-3.10/Help/module/FindCVS.rst
diff --git a/share/cmake-3.6/Help/module/FindCoin3D.rst b/share/cmake-3.10/Help/module/FindCoin3D.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindCoin3D.rst
rename to share/cmake-3.10/Help/module/FindCoin3D.rst
diff --git a/share/cmake-3.6/Help/module/FindCups.rst b/share/cmake-3.10/Help/module/FindCups.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindCups.rst
rename to share/cmake-3.10/Help/module/FindCups.rst
diff --git a/share/cmake-3.6/Help/module/FindCurses.rst b/share/cmake-3.10/Help/module/FindCurses.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindCurses.rst
rename to share/cmake-3.10/Help/module/FindCurses.rst
diff --git a/share/cmake-3.6/Help/module/FindCxxTest.rst b/share/cmake-3.10/Help/module/FindCxxTest.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindCxxTest.rst
rename to share/cmake-3.10/Help/module/FindCxxTest.rst
diff --git a/share/cmake-3.6/Help/module/FindCygwin.rst b/share/cmake-3.10/Help/module/FindCygwin.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindCygwin.rst
rename to share/cmake-3.10/Help/module/FindCygwin.rst
diff --git a/share/cmake-3.6/Help/module/FindDCMTK.rst b/share/cmake-3.10/Help/module/FindDCMTK.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindDCMTK.rst
rename to share/cmake-3.10/Help/module/FindDCMTK.rst
diff --git a/share/cmake-3.6/Help/module/FindDart.rst b/share/cmake-3.10/Help/module/FindDart.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindDart.rst
rename to share/cmake-3.10/Help/module/FindDart.rst
diff --git a/share/cmake-3.6/Help/module/FindDevIL.rst b/share/cmake-3.10/Help/module/FindDevIL.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindDevIL.rst
rename to share/cmake-3.10/Help/module/FindDevIL.rst
diff --git a/share/cmake-3.6/Help/module/FindDoxygen.rst b/share/cmake-3.10/Help/module/FindDoxygen.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindDoxygen.rst
rename to share/cmake-3.10/Help/module/FindDoxygen.rst
diff --git a/share/cmake-3.6/Help/module/FindEXPAT.rst b/share/cmake-3.10/Help/module/FindEXPAT.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindEXPAT.rst
rename to share/cmake-3.10/Help/module/FindEXPAT.rst
diff --git a/share/cmake-3.6/Help/module/FindFLEX.rst b/share/cmake-3.10/Help/module/FindFLEX.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindFLEX.rst
rename to share/cmake-3.10/Help/module/FindFLEX.rst
diff --git a/share/cmake-3.6/Help/module/FindFLTK.rst b/share/cmake-3.10/Help/module/FindFLTK.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindFLTK.rst
rename to share/cmake-3.10/Help/module/FindFLTK.rst
diff --git a/share/cmake-3.6/Help/module/FindFLTK2.rst b/share/cmake-3.10/Help/module/FindFLTK2.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindFLTK2.rst
rename to share/cmake-3.10/Help/module/FindFLTK2.rst
diff --git a/share/cmake-3.6/Help/module/FindFreetype.rst b/share/cmake-3.10/Help/module/FindFreetype.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindFreetype.rst
rename to share/cmake-3.10/Help/module/FindFreetype.rst
diff --git a/share/cmake-3.6/Help/module/FindGCCXML.rst b/share/cmake-3.10/Help/module/FindGCCXML.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindGCCXML.rst
rename to share/cmake-3.10/Help/module/FindGCCXML.rst
diff --git a/share/cmake-3.6/Help/module/FindGDAL.rst b/share/cmake-3.10/Help/module/FindGDAL.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindGDAL.rst
rename to share/cmake-3.10/Help/module/FindGDAL.rst
diff --git a/share/cmake-3.6/Help/module/FindGIF.rst b/share/cmake-3.10/Help/module/FindGIF.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindGIF.rst
rename to share/cmake-3.10/Help/module/FindGIF.rst
diff --git a/share/cmake-3.6/Help/module/FindGLEW.rst b/share/cmake-3.10/Help/module/FindGLEW.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindGLEW.rst
rename to share/cmake-3.10/Help/module/FindGLEW.rst
diff --git a/share/cmake-3.6/Help/module/FindGLUT.rst b/share/cmake-3.10/Help/module/FindGLUT.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindGLUT.rst
rename to share/cmake-3.10/Help/module/FindGLUT.rst
diff --git a/share/cmake-3.6/Help/module/FindGSL.rst b/share/cmake-3.10/Help/module/FindGSL.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindGSL.rst
rename to share/cmake-3.10/Help/module/FindGSL.rst
diff --git a/share/cmake-3.6/Help/module/FindGTK.rst b/share/cmake-3.10/Help/module/FindGTK.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindGTK.rst
rename to share/cmake-3.10/Help/module/FindGTK.rst
diff --git a/share/cmake-3.6/Help/module/FindGTK2.rst b/share/cmake-3.10/Help/module/FindGTK2.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindGTK2.rst
rename to share/cmake-3.10/Help/module/FindGTK2.rst
diff --git a/share/cmake-3.6/Help/module/FindGTest.rst b/share/cmake-3.10/Help/module/FindGTest.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindGTest.rst
rename to share/cmake-3.10/Help/module/FindGTest.rst
diff --git a/share/cmake-3.6/Help/module/FindGettext.rst b/share/cmake-3.10/Help/module/FindGettext.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindGettext.rst
rename to share/cmake-3.10/Help/module/FindGettext.rst
diff --git a/share/cmake-3.6/Help/module/FindGit.rst b/share/cmake-3.10/Help/module/FindGit.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindGit.rst
rename to share/cmake-3.10/Help/module/FindGit.rst
diff --git a/share/cmake-3.6/Help/module/FindGnuTLS.rst b/share/cmake-3.10/Help/module/FindGnuTLS.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindGnuTLS.rst
rename to share/cmake-3.10/Help/module/FindGnuTLS.rst
diff --git a/share/cmake-3.6/Help/module/FindGnuplot.rst b/share/cmake-3.10/Help/module/FindGnuplot.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindGnuplot.rst
rename to share/cmake-3.10/Help/module/FindGnuplot.rst
diff --git a/share/cmake-3.6/Help/module/FindHDF5.rst b/share/cmake-3.10/Help/module/FindHDF5.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindHDF5.rst
rename to share/cmake-3.10/Help/module/FindHDF5.rst
diff --git a/share/cmake-3.6/Help/module/FindHSPELL.rst b/share/cmake-3.10/Help/module/FindHSPELL.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindHSPELL.rst
rename to share/cmake-3.10/Help/module/FindHSPELL.rst
diff --git a/share/cmake-3.6/Help/module/FindHTMLHelp.rst b/share/cmake-3.10/Help/module/FindHTMLHelp.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindHTMLHelp.rst
rename to share/cmake-3.10/Help/module/FindHTMLHelp.rst
diff --git a/share/cmake-3.6/Help/module/FindHg.rst b/share/cmake-3.10/Help/module/FindHg.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindHg.rst
rename to share/cmake-3.10/Help/module/FindHg.rst
diff --git a/share/cmake-3.10/Help/module/FindICU.rst b/share/cmake-3.10/Help/module/FindICU.rst
new file mode 100644
index 0000000..ee3f4a9
--- /dev/null
+++ b/share/cmake-3.10/Help/module/FindICU.rst
@@ -0,0 +1 @@
+.. cmake-module:: ../../Modules/FindICU.cmake
diff --git a/share/cmake-3.6/Help/module/FindITK.rst b/share/cmake-3.10/Help/module/FindITK.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindITK.rst
rename to share/cmake-3.10/Help/module/FindITK.rst
diff --git a/share/cmake-3.6/Help/module/FindIce.rst b/share/cmake-3.10/Help/module/FindIce.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindIce.rst
rename to share/cmake-3.10/Help/module/FindIce.rst
diff --git a/share/cmake-3.6/Help/module/FindIcotool.rst b/share/cmake-3.10/Help/module/FindIcotool.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindIcotool.rst
rename to share/cmake-3.10/Help/module/FindIcotool.rst
diff --git a/share/cmake-3.6/Help/module/FindImageMagick.rst b/share/cmake-3.10/Help/module/FindImageMagick.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindImageMagick.rst
rename to share/cmake-3.10/Help/module/FindImageMagick.rst
diff --git a/share/cmake-3.6/Help/module/FindIntl.rst b/share/cmake-3.10/Help/module/FindIntl.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindIntl.rst
rename to share/cmake-3.10/Help/module/FindIntl.rst
diff --git a/share/cmake-3.6/Help/module/FindJNI.rst b/share/cmake-3.10/Help/module/FindJNI.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindJNI.rst
rename to share/cmake-3.10/Help/module/FindJNI.rst
diff --git a/share/cmake-3.6/Help/module/FindJPEG.rst b/share/cmake-3.10/Help/module/FindJPEG.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindJPEG.rst
rename to share/cmake-3.10/Help/module/FindJPEG.rst
diff --git a/share/cmake-3.6/Help/module/FindJasper.rst b/share/cmake-3.10/Help/module/FindJasper.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindJasper.rst
rename to share/cmake-3.10/Help/module/FindJasper.rst
diff --git a/share/cmake-3.6/Help/module/FindJava.rst b/share/cmake-3.10/Help/module/FindJava.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindJava.rst
rename to share/cmake-3.10/Help/module/FindJava.rst
diff --git a/share/cmake-3.6/Help/module/FindKDE3.rst b/share/cmake-3.10/Help/module/FindKDE3.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindKDE3.rst
rename to share/cmake-3.10/Help/module/FindKDE3.rst
diff --git a/share/cmake-3.6/Help/module/FindKDE4.rst b/share/cmake-3.10/Help/module/FindKDE4.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindKDE4.rst
rename to share/cmake-3.10/Help/module/FindKDE4.rst
diff --git a/share/cmake-3.6/Help/module/FindLAPACK.rst b/share/cmake-3.10/Help/module/FindLAPACK.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindLAPACK.rst
rename to share/cmake-3.10/Help/module/FindLAPACK.rst
diff --git a/share/cmake-3.6/Help/module/FindLATEX.rst b/share/cmake-3.10/Help/module/FindLATEX.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindLATEX.rst
rename to share/cmake-3.10/Help/module/FindLATEX.rst
diff --git a/share/cmake-3.6/Help/module/FindLTTngUST.rst b/share/cmake-3.10/Help/module/FindLTTngUST.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindLTTngUST.rst
rename to share/cmake-3.10/Help/module/FindLTTngUST.rst
diff --git a/share/cmake-3.6/Help/module/FindLibArchive.rst b/share/cmake-3.10/Help/module/FindLibArchive.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindLibArchive.rst
rename to share/cmake-3.10/Help/module/FindLibArchive.rst
diff --git a/share/cmake-3.6/Help/module/FindLibLZMA.rst b/share/cmake-3.10/Help/module/FindLibLZMA.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindLibLZMA.rst
rename to share/cmake-3.10/Help/module/FindLibLZMA.rst
diff --git a/share/cmake-3.6/Help/module/FindLibXml2.rst b/share/cmake-3.10/Help/module/FindLibXml2.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindLibXml2.rst
rename to share/cmake-3.10/Help/module/FindLibXml2.rst
diff --git a/share/cmake-3.6/Help/module/FindLibXslt.rst b/share/cmake-3.10/Help/module/FindLibXslt.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindLibXslt.rst
rename to share/cmake-3.10/Help/module/FindLibXslt.rst
diff --git a/share/cmake-3.6/Help/module/FindLua.rst b/share/cmake-3.10/Help/module/FindLua.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindLua.rst
rename to share/cmake-3.10/Help/module/FindLua.rst
diff --git a/share/cmake-3.6/Help/module/FindLua50.rst b/share/cmake-3.10/Help/module/FindLua50.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindLua50.rst
rename to share/cmake-3.10/Help/module/FindLua50.rst
diff --git a/share/cmake-3.6/Help/module/FindLua51.rst b/share/cmake-3.10/Help/module/FindLua51.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindLua51.rst
rename to share/cmake-3.10/Help/module/FindLua51.rst
diff --git a/share/cmake-3.6/Help/module/FindMFC.rst b/share/cmake-3.10/Help/module/FindMFC.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindMFC.rst
rename to share/cmake-3.10/Help/module/FindMFC.rst
diff --git a/share/cmake-3.6/Help/module/FindMPEG.rst b/share/cmake-3.10/Help/module/FindMPEG.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindMPEG.rst
rename to share/cmake-3.10/Help/module/FindMPEG.rst
diff --git a/share/cmake-3.6/Help/module/FindMPEG2.rst b/share/cmake-3.10/Help/module/FindMPEG2.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindMPEG2.rst
rename to share/cmake-3.10/Help/module/FindMPEG2.rst
diff --git a/share/cmake-3.6/Help/module/FindMPI.rst b/share/cmake-3.10/Help/module/FindMPI.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindMPI.rst
rename to share/cmake-3.10/Help/module/FindMPI.rst
diff --git a/share/cmake-3.6/Help/module/FindMatlab.rst b/share/cmake-3.10/Help/module/FindMatlab.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindMatlab.rst
rename to share/cmake-3.10/Help/module/FindMatlab.rst
diff --git a/share/cmake-3.6/Help/module/FindMotif.rst b/share/cmake-3.10/Help/module/FindMotif.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindMotif.rst
rename to share/cmake-3.10/Help/module/FindMotif.rst
diff --git a/share/cmake-3.10/Help/module/FindOpenACC.rst b/share/cmake-3.10/Help/module/FindOpenACC.rst
new file mode 100644
index 0000000..dda3308
--- /dev/null
+++ b/share/cmake-3.10/Help/module/FindOpenACC.rst
@@ -0,0 +1 @@
+.. cmake-module:: ../../Modules/FindOpenACC.cmake
diff --git a/share/cmake-3.6/Help/module/FindOpenAL.rst b/share/cmake-3.10/Help/module/FindOpenAL.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindOpenAL.rst
rename to share/cmake-3.10/Help/module/FindOpenAL.rst
diff --git a/share/cmake-3.6/Help/module/FindOpenCL.rst b/share/cmake-3.10/Help/module/FindOpenCL.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindOpenCL.rst
rename to share/cmake-3.10/Help/module/FindOpenCL.rst
diff --git a/share/cmake-3.6/Help/module/FindOpenGL.rst b/share/cmake-3.10/Help/module/FindOpenGL.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindOpenGL.rst
rename to share/cmake-3.10/Help/module/FindOpenGL.rst
diff --git a/share/cmake-3.6/Help/module/FindOpenMP.rst b/share/cmake-3.10/Help/module/FindOpenMP.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindOpenMP.rst
rename to share/cmake-3.10/Help/module/FindOpenMP.rst
diff --git a/share/cmake-3.6/Help/module/FindOpenSSL.rst b/share/cmake-3.10/Help/module/FindOpenSSL.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindOpenSSL.rst
rename to share/cmake-3.10/Help/module/FindOpenSSL.rst
diff --git a/share/cmake-3.6/Help/module/FindOpenSceneGraph.rst b/share/cmake-3.10/Help/module/FindOpenSceneGraph.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindOpenSceneGraph.rst
rename to share/cmake-3.10/Help/module/FindOpenSceneGraph.rst
diff --git a/share/cmake-3.6/Help/module/FindOpenThreads.rst b/share/cmake-3.10/Help/module/FindOpenThreads.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindOpenThreads.rst
rename to share/cmake-3.10/Help/module/FindOpenThreads.rst
diff --git a/share/cmake-3.6/Help/module/FindPHP4.rst b/share/cmake-3.10/Help/module/FindPHP4.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindPHP4.rst
rename to share/cmake-3.10/Help/module/FindPHP4.rst
diff --git a/share/cmake-3.6/Help/module/FindPNG.rst b/share/cmake-3.10/Help/module/FindPNG.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindPNG.rst
rename to share/cmake-3.10/Help/module/FindPNG.rst
diff --git a/share/cmake-3.6/Help/module/FindPackageHandleStandardArgs.rst b/share/cmake-3.10/Help/module/FindPackageHandleStandardArgs.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindPackageHandleStandardArgs.rst
rename to share/cmake-3.10/Help/module/FindPackageHandleStandardArgs.rst
diff --git a/share/cmake-3.6/Help/module/FindPackageMessage.rst b/share/cmake-3.10/Help/module/FindPackageMessage.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindPackageMessage.rst
rename to share/cmake-3.10/Help/module/FindPackageMessage.rst
diff --git a/share/cmake-3.10/Help/module/FindPatch.rst b/share/cmake-3.10/Help/module/FindPatch.rst
new file mode 100644
index 0000000..ba5e910
--- /dev/null
+++ b/share/cmake-3.10/Help/module/FindPatch.rst
@@ -0,0 +1 @@
+.. cmake-module:: ../../Modules/FindPatch.cmake
diff --git a/share/cmake-3.6/Help/module/FindPerl.rst b/share/cmake-3.10/Help/module/FindPerl.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindPerl.rst
rename to share/cmake-3.10/Help/module/FindPerl.rst
diff --git a/share/cmake-3.6/Help/module/FindPerlLibs.rst b/share/cmake-3.10/Help/module/FindPerlLibs.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindPerlLibs.rst
rename to share/cmake-3.10/Help/module/FindPerlLibs.rst
diff --git a/share/cmake-3.6/Help/module/FindPhysFS.rst b/share/cmake-3.10/Help/module/FindPhysFS.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindPhysFS.rst
rename to share/cmake-3.10/Help/module/FindPhysFS.rst
diff --git a/share/cmake-3.6/Help/module/FindPike.rst b/share/cmake-3.10/Help/module/FindPike.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindPike.rst
rename to share/cmake-3.10/Help/module/FindPike.rst
diff --git a/share/cmake-3.6/Help/module/FindPkgConfig.rst b/share/cmake-3.10/Help/module/FindPkgConfig.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindPkgConfig.rst
rename to share/cmake-3.10/Help/module/FindPkgConfig.rst
diff --git a/share/cmake-3.6/Help/module/FindPostgreSQL.rst b/share/cmake-3.10/Help/module/FindPostgreSQL.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindPostgreSQL.rst
rename to share/cmake-3.10/Help/module/FindPostgreSQL.rst
diff --git a/share/cmake-3.6/Help/module/FindProducer.rst b/share/cmake-3.10/Help/module/FindProducer.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindProducer.rst
rename to share/cmake-3.10/Help/module/FindProducer.rst
diff --git a/share/cmake-3.6/Help/module/FindProtobuf.rst b/share/cmake-3.10/Help/module/FindProtobuf.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindProtobuf.rst
rename to share/cmake-3.10/Help/module/FindProtobuf.rst
diff --git a/share/cmake-3.6/Help/module/FindPythonInterp.rst b/share/cmake-3.10/Help/module/FindPythonInterp.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindPythonInterp.rst
rename to share/cmake-3.10/Help/module/FindPythonInterp.rst
diff --git a/share/cmake-3.6/Help/module/FindPythonLibs.rst b/share/cmake-3.10/Help/module/FindPythonLibs.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindPythonLibs.rst
rename to share/cmake-3.10/Help/module/FindPythonLibs.rst
diff --git a/share/cmake-3.6/Help/module/FindQt.rst b/share/cmake-3.10/Help/module/FindQt.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindQt.rst
rename to share/cmake-3.10/Help/module/FindQt.rst
diff --git a/share/cmake-3.6/Help/module/FindQt3.rst b/share/cmake-3.10/Help/module/FindQt3.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindQt3.rst
rename to share/cmake-3.10/Help/module/FindQt3.rst
diff --git a/share/cmake-3.6/Help/module/FindQt4.rst b/share/cmake-3.10/Help/module/FindQt4.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindQt4.rst
rename to share/cmake-3.10/Help/module/FindQt4.rst
diff --git a/share/cmake-3.6/Help/module/FindQuickTime.rst b/share/cmake-3.10/Help/module/FindQuickTime.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindQuickTime.rst
rename to share/cmake-3.10/Help/module/FindQuickTime.rst
diff --git a/share/cmake-3.6/Help/module/FindRTI.rst b/share/cmake-3.10/Help/module/FindRTI.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindRTI.rst
rename to share/cmake-3.10/Help/module/FindRTI.rst
diff --git a/share/cmake-3.6/Help/module/FindRuby.rst b/share/cmake-3.10/Help/module/FindRuby.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindRuby.rst
rename to share/cmake-3.10/Help/module/FindRuby.rst
diff --git a/share/cmake-3.6/Help/module/FindSDL.rst b/share/cmake-3.10/Help/module/FindSDL.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindSDL.rst
rename to share/cmake-3.10/Help/module/FindSDL.rst
diff --git a/share/cmake-3.6/Help/module/FindSDL_image.rst b/share/cmake-3.10/Help/module/FindSDL_image.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindSDL_image.rst
rename to share/cmake-3.10/Help/module/FindSDL_image.rst
diff --git a/share/cmake-3.6/Help/module/FindSDL_mixer.rst b/share/cmake-3.10/Help/module/FindSDL_mixer.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindSDL_mixer.rst
rename to share/cmake-3.10/Help/module/FindSDL_mixer.rst
diff --git a/share/cmake-3.6/Help/module/FindSDL_net.rst b/share/cmake-3.10/Help/module/FindSDL_net.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindSDL_net.rst
rename to share/cmake-3.10/Help/module/FindSDL_net.rst
diff --git a/share/cmake-3.6/Help/module/FindSDL_sound.rst b/share/cmake-3.10/Help/module/FindSDL_sound.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindSDL_sound.rst
rename to share/cmake-3.10/Help/module/FindSDL_sound.rst
diff --git a/share/cmake-3.6/Help/module/FindSDL_ttf.rst b/share/cmake-3.10/Help/module/FindSDL_ttf.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindSDL_ttf.rst
rename to share/cmake-3.10/Help/module/FindSDL_ttf.rst
diff --git a/share/cmake-3.6/Help/module/FindSWIG.rst b/share/cmake-3.10/Help/module/FindSWIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindSWIG.rst
rename to share/cmake-3.10/Help/module/FindSWIG.rst
diff --git a/share/cmake-3.6/Help/module/FindSelfPackers.rst b/share/cmake-3.10/Help/module/FindSelfPackers.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindSelfPackers.rst
rename to share/cmake-3.10/Help/module/FindSelfPackers.rst
diff --git a/share/cmake-3.6/Help/module/FindSquish.rst b/share/cmake-3.10/Help/module/FindSquish.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindSquish.rst
rename to share/cmake-3.10/Help/module/FindSquish.rst
diff --git a/share/cmake-3.6/Help/module/FindSubversion.rst b/share/cmake-3.10/Help/module/FindSubversion.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindSubversion.rst
rename to share/cmake-3.10/Help/module/FindSubversion.rst
diff --git a/share/cmake-3.6/Help/module/FindTCL.rst b/share/cmake-3.10/Help/module/FindTCL.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindTCL.rst
rename to share/cmake-3.10/Help/module/FindTCL.rst
diff --git a/share/cmake-3.6/Help/module/FindTIFF.rst b/share/cmake-3.10/Help/module/FindTIFF.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindTIFF.rst
rename to share/cmake-3.10/Help/module/FindTIFF.rst
diff --git a/share/cmake-3.6/Help/module/FindTclStub.rst b/share/cmake-3.10/Help/module/FindTclStub.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindTclStub.rst
rename to share/cmake-3.10/Help/module/FindTclStub.rst
diff --git a/share/cmake-3.6/Help/module/FindTclsh.rst b/share/cmake-3.10/Help/module/FindTclsh.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindTclsh.rst
rename to share/cmake-3.10/Help/module/FindTclsh.rst
diff --git a/share/cmake-3.6/Help/module/FindThreads.rst b/share/cmake-3.10/Help/module/FindThreads.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindThreads.rst
rename to share/cmake-3.10/Help/module/FindThreads.rst
diff --git a/share/cmake-3.6/Help/module/FindUnixCommands.rst b/share/cmake-3.10/Help/module/FindUnixCommands.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindUnixCommands.rst
rename to share/cmake-3.10/Help/module/FindUnixCommands.rst
diff --git a/share/cmake-3.6/Help/module/FindVTK.rst b/share/cmake-3.10/Help/module/FindVTK.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindVTK.rst
rename to share/cmake-3.10/Help/module/FindVTK.rst
diff --git a/share/cmake-3.10/Help/module/FindVulkan.rst b/share/cmake-3.10/Help/module/FindVulkan.rst
new file mode 100644
index 0000000..adf824e
--- /dev/null
+++ b/share/cmake-3.10/Help/module/FindVulkan.rst
@@ -0,0 +1 @@
+.. cmake-module:: ../../Modules/FindVulkan.cmake
diff --git a/share/cmake-3.6/Help/module/FindWget.rst b/share/cmake-3.10/Help/module/FindWget.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindWget.rst
rename to share/cmake-3.10/Help/module/FindWget.rst
diff --git a/share/cmake-3.6/Help/module/FindWish.rst b/share/cmake-3.10/Help/module/FindWish.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindWish.rst
rename to share/cmake-3.10/Help/module/FindWish.rst
diff --git a/share/cmake-3.6/Help/module/FindX11.rst b/share/cmake-3.10/Help/module/FindX11.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindX11.rst
rename to share/cmake-3.10/Help/module/FindX11.rst
diff --git a/share/cmake-3.6/Help/module/FindXCTest.rst b/share/cmake-3.10/Help/module/FindXCTest.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindXCTest.rst
rename to share/cmake-3.10/Help/module/FindXCTest.rst
diff --git a/share/cmake-3.6/Help/module/FindXMLRPC.rst b/share/cmake-3.10/Help/module/FindXMLRPC.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindXMLRPC.rst
rename to share/cmake-3.10/Help/module/FindXMLRPC.rst
diff --git a/share/cmake-3.6/Help/module/FindXalanC.rst b/share/cmake-3.10/Help/module/FindXalanC.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindXalanC.rst
rename to share/cmake-3.10/Help/module/FindXalanC.rst
diff --git a/share/cmake-3.6/Help/module/FindXercesC.rst b/share/cmake-3.10/Help/module/FindXercesC.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindXercesC.rst
rename to share/cmake-3.10/Help/module/FindXercesC.rst
diff --git a/share/cmake-3.6/Help/module/FindZLIB.rst b/share/cmake-3.10/Help/module/FindZLIB.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindZLIB.rst
rename to share/cmake-3.10/Help/module/FindZLIB.rst
diff --git a/share/cmake-3.6/Help/module/Findosg.rst b/share/cmake-3.10/Help/module/Findosg.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/Findosg.rst
rename to share/cmake-3.10/Help/module/Findosg.rst
diff --git a/share/cmake-3.6/Help/module/FindosgAnimation.rst b/share/cmake-3.10/Help/module/FindosgAnimation.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindosgAnimation.rst
rename to share/cmake-3.10/Help/module/FindosgAnimation.rst
diff --git a/share/cmake-3.6/Help/module/FindosgDB.rst b/share/cmake-3.10/Help/module/FindosgDB.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindosgDB.rst
rename to share/cmake-3.10/Help/module/FindosgDB.rst
diff --git a/share/cmake-3.6/Help/module/FindosgFX.rst b/share/cmake-3.10/Help/module/FindosgFX.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindosgFX.rst
rename to share/cmake-3.10/Help/module/FindosgFX.rst
diff --git a/share/cmake-3.6/Help/module/FindosgGA.rst b/share/cmake-3.10/Help/module/FindosgGA.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindosgGA.rst
rename to share/cmake-3.10/Help/module/FindosgGA.rst
diff --git a/share/cmake-3.6/Help/module/FindosgIntrospection.rst b/share/cmake-3.10/Help/module/FindosgIntrospection.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindosgIntrospection.rst
rename to share/cmake-3.10/Help/module/FindosgIntrospection.rst
diff --git a/share/cmake-3.6/Help/module/FindosgManipulator.rst b/share/cmake-3.10/Help/module/FindosgManipulator.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindosgManipulator.rst
rename to share/cmake-3.10/Help/module/FindosgManipulator.rst
diff --git a/share/cmake-3.6/Help/module/FindosgParticle.rst b/share/cmake-3.10/Help/module/FindosgParticle.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindosgParticle.rst
rename to share/cmake-3.10/Help/module/FindosgParticle.rst
diff --git a/share/cmake-3.6/Help/module/FindosgPresentation.rst b/share/cmake-3.10/Help/module/FindosgPresentation.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindosgPresentation.rst
rename to share/cmake-3.10/Help/module/FindosgPresentation.rst
diff --git a/share/cmake-3.6/Help/module/FindosgProducer.rst b/share/cmake-3.10/Help/module/FindosgProducer.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindosgProducer.rst
rename to share/cmake-3.10/Help/module/FindosgProducer.rst
diff --git a/share/cmake-3.6/Help/module/FindosgQt.rst b/share/cmake-3.10/Help/module/FindosgQt.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindosgQt.rst
rename to share/cmake-3.10/Help/module/FindosgQt.rst
diff --git a/share/cmake-3.6/Help/module/FindosgShadow.rst b/share/cmake-3.10/Help/module/FindosgShadow.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindosgShadow.rst
rename to share/cmake-3.10/Help/module/FindosgShadow.rst
diff --git a/share/cmake-3.6/Help/module/FindosgSim.rst b/share/cmake-3.10/Help/module/FindosgSim.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindosgSim.rst
rename to share/cmake-3.10/Help/module/FindosgSim.rst
diff --git a/share/cmake-3.6/Help/module/FindosgTerrain.rst b/share/cmake-3.10/Help/module/FindosgTerrain.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindosgTerrain.rst
rename to share/cmake-3.10/Help/module/FindosgTerrain.rst
diff --git a/share/cmake-3.6/Help/module/FindosgText.rst b/share/cmake-3.10/Help/module/FindosgText.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindosgText.rst
rename to share/cmake-3.10/Help/module/FindosgText.rst
diff --git a/share/cmake-3.6/Help/module/FindosgUtil.rst b/share/cmake-3.10/Help/module/FindosgUtil.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindosgUtil.rst
rename to share/cmake-3.10/Help/module/FindosgUtil.rst
diff --git a/share/cmake-3.6/Help/module/FindosgViewer.rst b/share/cmake-3.10/Help/module/FindosgViewer.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindosgViewer.rst
rename to share/cmake-3.10/Help/module/FindosgViewer.rst
diff --git a/share/cmake-3.6/Help/module/FindosgVolume.rst b/share/cmake-3.10/Help/module/FindosgVolume.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindosgVolume.rst
rename to share/cmake-3.10/Help/module/FindosgVolume.rst
diff --git a/share/cmake-3.6/Help/module/FindosgWidget.rst b/share/cmake-3.10/Help/module/FindosgWidget.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindosgWidget.rst
rename to share/cmake-3.10/Help/module/FindosgWidget.rst
diff --git a/share/cmake-3.6/Help/module/Findosg_functions.rst b/share/cmake-3.10/Help/module/Findosg_functions.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/Findosg_functions.rst
rename to share/cmake-3.10/Help/module/Findosg_functions.rst
diff --git a/share/cmake-3.6/Help/module/FindwxWidgets.rst b/share/cmake-3.10/Help/module/FindwxWidgets.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindwxWidgets.rst
rename to share/cmake-3.10/Help/module/FindwxWidgets.rst
diff --git a/share/cmake-3.6/Help/module/FindwxWindows.rst b/share/cmake-3.10/Help/module/FindwxWindows.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FindwxWindows.rst
rename to share/cmake-3.10/Help/module/FindwxWindows.rst
diff --git a/share/cmake-3.6/Help/module/FortranCInterface.rst b/share/cmake-3.10/Help/module/FortranCInterface.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/FortranCInterface.rst
rename to share/cmake-3.10/Help/module/FortranCInterface.rst
diff --git a/share/cmake-3.6/Help/module/GNUInstallDirs.rst b/share/cmake-3.10/Help/module/GNUInstallDirs.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/GNUInstallDirs.rst
rename to share/cmake-3.10/Help/module/GNUInstallDirs.rst
diff --git a/share/cmake-3.6/Help/module/GenerateExportHeader.rst b/share/cmake-3.10/Help/module/GenerateExportHeader.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/GenerateExportHeader.rst
rename to share/cmake-3.10/Help/module/GenerateExportHeader.rst
diff --git a/share/cmake-3.6/Help/module/GetPrerequisites.rst b/share/cmake-3.10/Help/module/GetPrerequisites.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/GetPrerequisites.rst
rename to share/cmake-3.10/Help/module/GetPrerequisites.rst
diff --git a/share/cmake-3.10/Help/module/GoogleTest.rst b/share/cmake-3.10/Help/module/GoogleTest.rst
new file mode 100644
index 0000000..3d4cc97
--- /dev/null
+++ b/share/cmake-3.10/Help/module/GoogleTest.rst
@@ -0,0 +1 @@
+.. cmake-module:: ../../Modules/GoogleTest.cmake
diff --git a/share/cmake-3.6/Help/module/InstallRequiredSystemLibraries.rst b/share/cmake-3.10/Help/module/InstallRequiredSystemLibraries.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/InstallRequiredSystemLibraries.rst
rename to share/cmake-3.10/Help/module/InstallRequiredSystemLibraries.rst
diff --git a/share/cmake-3.6/Help/module/MacroAddFileDependencies.rst b/share/cmake-3.10/Help/module/MacroAddFileDependencies.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/MacroAddFileDependencies.rst
rename to share/cmake-3.10/Help/module/MacroAddFileDependencies.rst
diff --git a/share/cmake-3.6/Help/module/ProcessorCount.rst b/share/cmake-3.10/Help/module/ProcessorCount.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/ProcessorCount.rst
rename to share/cmake-3.10/Help/module/ProcessorCount.rst
diff --git a/share/cmake-3.6/Help/module/SelectLibraryConfigurations.rst b/share/cmake-3.10/Help/module/SelectLibraryConfigurations.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/SelectLibraryConfigurations.rst
rename to share/cmake-3.10/Help/module/SelectLibraryConfigurations.rst
diff --git a/share/cmake-3.6/Help/module/SquishTestScript.rst b/share/cmake-3.10/Help/module/SquishTestScript.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/SquishTestScript.rst
rename to share/cmake-3.10/Help/module/SquishTestScript.rst
diff --git a/share/cmake-3.6/Help/module/TestBigEndian.rst b/share/cmake-3.10/Help/module/TestBigEndian.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/TestBigEndian.rst
rename to share/cmake-3.10/Help/module/TestBigEndian.rst
diff --git a/share/cmake-3.6/Help/module/TestCXXAcceptsFlag.rst b/share/cmake-3.10/Help/module/TestCXXAcceptsFlag.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/TestCXXAcceptsFlag.rst
rename to share/cmake-3.10/Help/module/TestCXXAcceptsFlag.rst
diff --git a/share/cmake-3.6/Help/module/TestForANSIForScope.rst b/share/cmake-3.10/Help/module/TestForANSIForScope.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/TestForANSIForScope.rst
rename to share/cmake-3.10/Help/module/TestForANSIForScope.rst
diff --git a/share/cmake-3.6/Help/module/TestForANSIStreamHeaders.rst b/share/cmake-3.10/Help/module/TestForANSIStreamHeaders.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/TestForANSIStreamHeaders.rst
rename to share/cmake-3.10/Help/module/TestForANSIStreamHeaders.rst
diff --git a/share/cmake-3.6/Help/module/TestForSSTREAM.rst b/share/cmake-3.10/Help/module/TestForSSTREAM.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/TestForSSTREAM.rst
rename to share/cmake-3.10/Help/module/TestForSSTREAM.rst
diff --git a/share/cmake-3.6/Help/module/TestForSTDNamespace.rst b/share/cmake-3.10/Help/module/TestForSTDNamespace.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/TestForSTDNamespace.rst
rename to share/cmake-3.10/Help/module/TestForSTDNamespace.rst
diff --git a/share/cmake-3.6/Help/module/UseEcos.rst b/share/cmake-3.10/Help/module/UseEcos.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/UseEcos.rst
rename to share/cmake-3.10/Help/module/UseEcos.rst
diff --git a/share/cmake-3.6/Help/module/UseJava.rst b/share/cmake-3.10/Help/module/UseJava.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/UseJava.rst
rename to share/cmake-3.10/Help/module/UseJava.rst
diff --git a/share/cmake-3.6/Help/module/UseJavaClassFilelist.rst b/share/cmake-3.10/Help/module/UseJavaClassFilelist.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/UseJavaClassFilelist.rst
rename to share/cmake-3.10/Help/module/UseJavaClassFilelist.rst
diff --git a/share/cmake-3.6/Help/module/UseJavaSymlinks.rst b/share/cmake-3.10/Help/module/UseJavaSymlinks.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/UseJavaSymlinks.rst
rename to share/cmake-3.10/Help/module/UseJavaSymlinks.rst
diff --git a/share/cmake-3.6/Help/module/UsePkgConfig.rst b/share/cmake-3.10/Help/module/UsePkgConfig.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/UsePkgConfig.rst
rename to share/cmake-3.10/Help/module/UsePkgConfig.rst
diff --git a/share/cmake-3.6/Help/module/UseSWIG.rst b/share/cmake-3.10/Help/module/UseSWIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/UseSWIG.rst
rename to share/cmake-3.10/Help/module/UseSWIG.rst
diff --git a/share/cmake-3.6/Help/module/Use_wxWindows.rst b/share/cmake-3.10/Help/module/Use_wxWindows.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/Use_wxWindows.rst
rename to share/cmake-3.10/Help/module/Use_wxWindows.rst
diff --git a/share/cmake-3.6/Help/module/UsewxWidgets.rst b/share/cmake-3.10/Help/module/UsewxWidgets.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/UsewxWidgets.rst
rename to share/cmake-3.10/Help/module/UsewxWidgets.rst
diff --git a/share/cmake-3.6/Help/module/WriteBasicConfigVersionFile.rst b/share/cmake-3.10/Help/module/WriteBasicConfigVersionFile.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/WriteBasicConfigVersionFile.rst
rename to share/cmake-3.10/Help/module/WriteBasicConfigVersionFile.rst
diff --git a/share/cmake-3.6/Help/module/WriteCompilerDetectionHeader.rst b/share/cmake-3.10/Help/module/WriteCompilerDetectionHeader.rst
similarity index 100%
rename from share/cmake-3.6/Help/module/WriteCompilerDetectionHeader.rst
rename to share/cmake-3.10/Help/module/WriteCompilerDetectionHeader.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0000.rst b/share/cmake-3.10/Help/policy/CMP0000.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0000.rst
rename to share/cmake-3.10/Help/policy/CMP0000.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0001.rst b/share/cmake-3.10/Help/policy/CMP0001.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0001.rst
rename to share/cmake-3.10/Help/policy/CMP0001.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0002.rst b/share/cmake-3.10/Help/policy/CMP0002.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0002.rst
rename to share/cmake-3.10/Help/policy/CMP0002.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0003.rst b/share/cmake-3.10/Help/policy/CMP0003.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0003.rst
rename to share/cmake-3.10/Help/policy/CMP0003.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0004.rst b/share/cmake-3.10/Help/policy/CMP0004.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0004.rst
rename to share/cmake-3.10/Help/policy/CMP0004.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0005.rst b/share/cmake-3.10/Help/policy/CMP0005.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0005.rst
rename to share/cmake-3.10/Help/policy/CMP0005.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0006.rst b/share/cmake-3.10/Help/policy/CMP0006.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0006.rst
rename to share/cmake-3.10/Help/policy/CMP0006.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0007.rst b/share/cmake-3.10/Help/policy/CMP0007.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0007.rst
rename to share/cmake-3.10/Help/policy/CMP0007.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0008.rst b/share/cmake-3.10/Help/policy/CMP0008.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0008.rst
rename to share/cmake-3.10/Help/policy/CMP0008.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0009.rst b/share/cmake-3.10/Help/policy/CMP0009.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0009.rst
rename to share/cmake-3.10/Help/policy/CMP0009.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0010.rst b/share/cmake-3.10/Help/policy/CMP0010.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0010.rst
rename to share/cmake-3.10/Help/policy/CMP0010.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0011.rst b/share/cmake-3.10/Help/policy/CMP0011.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0011.rst
rename to share/cmake-3.10/Help/policy/CMP0011.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0012.rst b/share/cmake-3.10/Help/policy/CMP0012.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0012.rst
rename to share/cmake-3.10/Help/policy/CMP0012.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0013.rst b/share/cmake-3.10/Help/policy/CMP0013.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0013.rst
rename to share/cmake-3.10/Help/policy/CMP0013.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0014.rst b/share/cmake-3.10/Help/policy/CMP0014.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0014.rst
rename to share/cmake-3.10/Help/policy/CMP0014.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0015.rst b/share/cmake-3.10/Help/policy/CMP0015.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0015.rst
rename to share/cmake-3.10/Help/policy/CMP0015.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0016.rst b/share/cmake-3.10/Help/policy/CMP0016.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0016.rst
rename to share/cmake-3.10/Help/policy/CMP0016.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0017.rst b/share/cmake-3.10/Help/policy/CMP0017.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0017.rst
rename to share/cmake-3.10/Help/policy/CMP0017.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0018.rst b/share/cmake-3.10/Help/policy/CMP0018.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0018.rst
rename to share/cmake-3.10/Help/policy/CMP0018.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0019.rst b/share/cmake-3.10/Help/policy/CMP0019.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0019.rst
rename to share/cmake-3.10/Help/policy/CMP0019.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0020.rst b/share/cmake-3.10/Help/policy/CMP0020.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0020.rst
rename to share/cmake-3.10/Help/policy/CMP0020.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0021.rst b/share/cmake-3.10/Help/policy/CMP0021.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0021.rst
rename to share/cmake-3.10/Help/policy/CMP0021.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0022.rst b/share/cmake-3.10/Help/policy/CMP0022.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0022.rst
rename to share/cmake-3.10/Help/policy/CMP0022.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0023.rst b/share/cmake-3.10/Help/policy/CMP0023.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0023.rst
rename to share/cmake-3.10/Help/policy/CMP0023.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0024.rst b/share/cmake-3.10/Help/policy/CMP0024.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0024.rst
rename to share/cmake-3.10/Help/policy/CMP0024.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0025.rst b/share/cmake-3.10/Help/policy/CMP0025.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0025.rst
rename to share/cmake-3.10/Help/policy/CMP0025.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0026.rst b/share/cmake-3.10/Help/policy/CMP0026.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0026.rst
rename to share/cmake-3.10/Help/policy/CMP0026.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0027.rst b/share/cmake-3.10/Help/policy/CMP0027.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0027.rst
rename to share/cmake-3.10/Help/policy/CMP0027.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0028.rst b/share/cmake-3.10/Help/policy/CMP0028.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0028.rst
rename to share/cmake-3.10/Help/policy/CMP0028.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0029.rst b/share/cmake-3.10/Help/policy/CMP0029.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0029.rst
rename to share/cmake-3.10/Help/policy/CMP0029.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0030.rst b/share/cmake-3.10/Help/policy/CMP0030.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0030.rst
rename to share/cmake-3.10/Help/policy/CMP0030.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0031.rst b/share/cmake-3.10/Help/policy/CMP0031.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0031.rst
rename to share/cmake-3.10/Help/policy/CMP0031.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0032.rst b/share/cmake-3.10/Help/policy/CMP0032.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0032.rst
rename to share/cmake-3.10/Help/policy/CMP0032.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0033.rst b/share/cmake-3.10/Help/policy/CMP0033.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0033.rst
rename to share/cmake-3.10/Help/policy/CMP0033.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0034.rst b/share/cmake-3.10/Help/policy/CMP0034.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0034.rst
rename to share/cmake-3.10/Help/policy/CMP0034.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0035.rst b/share/cmake-3.10/Help/policy/CMP0035.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0035.rst
rename to share/cmake-3.10/Help/policy/CMP0035.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0036.rst b/share/cmake-3.10/Help/policy/CMP0036.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0036.rst
rename to share/cmake-3.10/Help/policy/CMP0036.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0037.rst b/share/cmake-3.10/Help/policy/CMP0037.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0037.rst
rename to share/cmake-3.10/Help/policy/CMP0037.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0038.rst b/share/cmake-3.10/Help/policy/CMP0038.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0038.rst
rename to share/cmake-3.10/Help/policy/CMP0038.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0039.rst b/share/cmake-3.10/Help/policy/CMP0039.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0039.rst
rename to share/cmake-3.10/Help/policy/CMP0039.rst
diff --git a/share/cmake-3.10/Help/policy/CMP0040.rst b/share/cmake-3.10/Help/policy/CMP0040.rst
new file mode 100644
index 0000000..0afe589
--- /dev/null
+++ b/share/cmake-3.10/Help/policy/CMP0040.rst
@@ -0,0 +1,21 @@
+CMP0040
+-------
+
+The target in the ``TARGET`` signature of :command:`add_custom_command`
+must exist and must be defined in the current directory.
+
+CMake 2.8.12 and lower silently ignored a custom command created with
+the ``TARGET`` signature of :command:`add_custom_command`
+if the target is unknown or was defined outside the current directory.
+
+The ``OLD`` behavior for this policy is to ignore custom commands
+for unknown targets.  The ``NEW`` behavior for this policy is to report
+an error if the target referenced in :command:`add_custom_command` is
+unknown or was defined outside the current directory.
+
+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.6/Help/policy/CMP0041.rst b/share/cmake-3.10/Help/policy/CMP0041.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0041.rst
rename to share/cmake-3.10/Help/policy/CMP0041.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0042.rst b/share/cmake-3.10/Help/policy/CMP0042.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0042.rst
rename to share/cmake-3.10/Help/policy/CMP0042.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0043.rst b/share/cmake-3.10/Help/policy/CMP0043.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0043.rst
rename to share/cmake-3.10/Help/policy/CMP0043.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0044.rst b/share/cmake-3.10/Help/policy/CMP0044.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0044.rst
rename to share/cmake-3.10/Help/policy/CMP0044.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0045.rst b/share/cmake-3.10/Help/policy/CMP0045.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0045.rst
rename to share/cmake-3.10/Help/policy/CMP0045.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0046.rst b/share/cmake-3.10/Help/policy/CMP0046.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0046.rst
rename to share/cmake-3.10/Help/policy/CMP0046.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0047.rst b/share/cmake-3.10/Help/policy/CMP0047.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0047.rst
rename to share/cmake-3.10/Help/policy/CMP0047.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0048.rst b/share/cmake-3.10/Help/policy/CMP0048.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0048.rst
rename to share/cmake-3.10/Help/policy/CMP0048.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0049.rst b/share/cmake-3.10/Help/policy/CMP0049.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0049.rst
rename to share/cmake-3.10/Help/policy/CMP0049.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0050.rst b/share/cmake-3.10/Help/policy/CMP0050.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0050.rst
rename to share/cmake-3.10/Help/policy/CMP0050.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0051.rst b/share/cmake-3.10/Help/policy/CMP0051.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0051.rst
rename to share/cmake-3.10/Help/policy/CMP0051.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0052.rst b/share/cmake-3.10/Help/policy/CMP0052.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0052.rst
rename to share/cmake-3.10/Help/policy/CMP0052.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0053.rst b/share/cmake-3.10/Help/policy/CMP0053.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0053.rst
rename to share/cmake-3.10/Help/policy/CMP0053.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0054.rst b/share/cmake-3.10/Help/policy/CMP0054.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0054.rst
rename to share/cmake-3.10/Help/policy/CMP0054.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0055.rst b/share/cmake-3.10/Help/policy/CMP0055.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0055.rst
rename to share/cmake-3.10/Help/policy/CMP0055.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0056.rst b/share/cmake-3.10/Help/policy/CMP0056.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0056.rst
rename to share/cmake-3.10/Help/policy/CMP0056.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0057.rst b/share/cmake-3.10/Help/policy/CMP0057.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0057.rst
rename to share/cmake-3.10/Help/policy/CMP0057.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0058.rst b/share/cmake-3.10/Help/policy/CMP0058.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0058.rst
rename to share/cmake-3.10/Help/policy/CMP0058.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0059.rst b/share/cmake-3.10/Help/policy/CMP0059.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0059.rst
rename to share/cmake-3.10/Help/policy/CMP0059.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0060.rst b/share/cmake-3.10/Help/policy/CMP0060.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0060.rst
rename to share/cmake-3.10/Help/policy/CMP0060.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0061.rst b/share/cmake-3.10/Help/policy/CMP0061.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0061.rst
rename to share/cmake-3.10/Help/policy/CMP0061.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0062.rst b/share/cmake-3.10/Help/policy/CMP0062.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0062.rst
rename to share/cmake-3.10/Help/policy/CMP0062.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0063.rst b/share/cmake-3.10/Help/policy/CMP0063.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0063.rst
rename to share/cmake-3.10/Help/policy/CMP0063.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0064.rst b/share/cmake-3.10/Help/policy/CMP0064.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0064.rst
rename to share/cmake-3.10/Help/policy/CMP0064.rst
diff --git a/share/cmake-3.6/Help/policy/CMP0065.rst b/share/cmake-3.10/Help/policy/CMP0065.rst
similarity index 100%
rename from share/cmake-3.6/Help/policy/CMP0065.rst
rename to share/cmake-3.10/Help/policy/CMP0065.rst
diff --git a/share/cmake-3.10/Help/policy/CMP0066.rst b/share/cmake-3.10/Help/policy/CMP0066.rst
new file mode 100644
index 0000000..d1dcb0e
--- /dev/null
+++ b/share/cmake-3.10/Help/policy/CMP0066.rst
@@ -0,0 +1,27 @@
+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.10/Help/policy/CMP0067.rst b/share/cmake-3.10/Help/policy/CMP0067.rst
new file mode 100644
index 0000000..e6dda80
--- /dev/null
+++ b/share/cmake-3.10/Help/policy/CMP0067.rst
@@ -0,0 +1,37 @@
+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.10/Help/policy/CMP0068.rst b/share/cmake-3.10/Help/policy/CMP0068.rst
new file mode 100644
index 0000000..978a6e3
--- /dev/null
+++ b/share/cmake-3.10/Help/policy/CMP0068.rst
@@ -0,0 +1,35 @@
+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.10/Help/policy/CMP0069.rst b/share/cmake-3.10/Help/policy/CMP0069.rst
new file mode 100644
index 0000000..0d5ddfd
--- /dev/null
+++ b/share/cmake-3.10/Help/policy/CMP0069.rst
@@ -0,0 +1,92 @@
+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.10/Help/policy/CMP0070.rst b/share/cmake-3.10/Help/policy/CMP0070.rst
new file mode 100644
index 0000000..0fb3617
--- /dev/null
+++ b/share/cmake-3.10/Help/policy/CMP0070.rst
@@ -0,0 +1,25 @@
+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.10/Help/policy/CMP0071.rst b/share/cmake-3.10/Help/policy/CMP0071.rst
new file mode 100644
index 0000000..ee33aa1
--- /dev/null
+++ b/share/cmake-3.10/Help/policy/CMP0071.rst
@@ -0,0 +1,42 @@
+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.6/Help/policy/DEPRECATED.txt b/share/cmake-3.10/Help/policy/DEPRECATED.txt
similarity index 100%
rename from share/cmake-3.6/Help/policy/DEPRECATED.txt
rename to share/cmake-3.10/Help/policy/DEPRECATED.txt
diff --git a/share/cmake-3.6/Help/policy/DISALLOWED_COMMAND.txt b/share/cmake-3.10/Help/policy/DISALLOWED_COMMAND.txt
similarity index 100%
rename from share/cmake-3.6/Help/policy/DISALLOWED_COMMAND.txt
rename to share/cmake-3.10/Help/policy/DISALLOWED_COMMAND.txt
diff --git a/share/cmake-3.6/Help/prop_cache/ADVANCED.rst b/share/cmake-3.10/Help/prop_cache/ADVANCED.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_cache/ADVANCED.rst
rename to share/cmake-3.10/Help/prop_cache/ADVANCED.rst
diff --git a/share/cmake-3.6/Help/prop_cache/HELPSTRING.rst b/share/cmake-3.10/Help/prop_cache/HELPSTRING.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_cache/HELPSTRING.rst
rename to share/cmake-3.10/Help/prop_cache/HELPSTRING.rst
diff --git a/share/cmake-3.6/Help/prop_cache/MODIFIED.rst b/share/cmake-3.10/Help/prop_cache/MODIFIED.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_cache/MODIFIED.rst
rename to share/cmake-3.10/Help/prop_cache/MODIFIED.rst
diff --git a/share/cmake-3.6/Help/prop_cache/STRINGS.rst b/share/cmake-3.10/Help/prop_cache/STRINGS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_cache/STRINGS.rst
rename to share/cmake-3.10/Help/prop_cache/STRINGS.rst
diff --git a/share/cmake-3.6/Help/prop_cache/TYPE.rst b/share/cmake-3.10/Help/prop_cache/TYPE.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_cache/TYPE.rst
rename to share/cmake-3.10/Help/prop_cache/TYPE.rst
diff --git a/share/cmake-3.6/Help/prop_cache/VALUE.rst b/share/cmake-3.10/Help/prop_cache/VALUE.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_cache/VALUE.rst
rename to share/cmake-3.10/Help/prop_cache/VALUE.rst
diff --git a/share/cmake-3.6/Help/prop_dir/ADDITIONAL_MAKE_CLEAN_FILES.rst b/share/cmake-3.10/Help/prop_dir/ADDITIONAL_MAKE_CLEAN_FILES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_dir/ADDITIONAL_MAKE_CLEAN_FILES.rst
rename to share/cmake-3.10/Help/prop_dir/ADDITIONAL_MAKE_CLEAN_FILES.rst
diff --git a/share/cmake-3.10/Help/prop_dir/BINARY_DIR.rst b/share/cmake-3.10/Help/prop_dir/BINARY_DIR.rst
new file mode 100644
index 0000000..597c79a
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_dir/BINARY_DIR.rst
@@ -0,0 +1,5 @@
+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.10/Help/prop_dir/BUILDSYSTEM_TARGETS.rst b/share/cmake-3.10/Help/prop_dir/BUILDSYSTEM_TARGETS.rst
new file mode 100644
index 0000000..da907cb
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_dir/BUILDSYSTEM_TARGETS.rst
@@ -0,0 +1,11 @@
+BUILDSYSTEM_TARGETS
+-------------------
+
+This read-only directory property contains a
+:ref:`;-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.6/Help/prop_dir/CACHE_VARIABLES.rst b/share/cmake-3.10/Help/prop_dir/CACHE_VARIABLES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_dir/CACHE_VARIABLES.rst
rename to share/cmake-3.10/Help/prop_dir/CACHE_VARIABLES.rst
diff --git a/share/cmake-3.6/Help/prop_dir/CLEAN_NO_CUSTOM.rst b/share/cmake-3.10/Help/prop_dir/CLEAN_NO_CUSTOM.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_dir/CLEAN_NO_CUSTOM.rst
rename to share/cmake-3.10/Help/prop_dir/CLEAN_NO_CUSTOM.rst
diff --git a/share/cmake-3.6/Help/prop_dir/CMAKE_CONFIGURE_DEPENDS.rst b/share/cmake-3.10/Help/prop_dir/CMAKE_CONFIGURE_DEPENDS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_dir/CMAKE_CONFIGURE_DEPENDS.rst
rename to share/cmake-3.10/Help/prop_dir/CMAKE_CONFIGURE_DEPENDS.rst
diff --git a/share/cmake-3.6/Help/prop_dir/COMPILE_DEFINITIONS.rst b/share/cmake-3.10/Help/prop_dir/COMPILE_DEFINITIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_dir/COMPILE_DEFINITIONS.rst
rename to share/cmake-3.10/Help/prop_dir/COMPILE_DEFINITIONS.rst
diff --git a/share/cmake-3.6/Help/prop_dir/COMPILE_DEFINITIONS_CONFIG.rst b/share/cmake-3.10/Help/prop_dir/COMPILE_DEFINITIONS_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_dir/COMPILE_DEFINITIONS_CONFIG.rst
rename to share/cmake-3.10/Help/prop_dir/COMPILE_DEFINITIONS_CONFIG.rst
diff --git a/share/cmake-3.6/Help/prop_dir/COMPILE_OPTIONS.rst b/share/cmake-3.10/Help/prop_dir/COMPILE_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_dir/COMPILE_OPTIONS.rst
rename to share/cmake-3.10/Help/prop_dir/COMPILE_OPTIONS.rst
diff --git a/share/cmake-3.6/Help/prop_dir/DEFINITIONS.rst b/share/cmake-3.10/Help/prop_dir/DEFINITIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_dir/DEFINITIONS.rst
rename to share/cmake-3.10/Help/prop_dir/DEFINITIONS.rst
diff --git a/share/cmake-3.6/Help/prop_dir/EXCLUDE_FROM_ALL.rst b/share/cmake-3.10/Help/prop_dir/EXCLUDE_FROM_ALL.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_dir/EXCLUDE_FROM_ALL.rst
rename to share/cmake-3.10/Help/prop_dir/EXCLUDE_FROM_ALL.rst
diff --git a/share/cmake-3.6/Help/prop_dir/IMPLICIT_DEPENDS_INCLUDE_TRANSFORM.rst b/share/cmake-3.10/Help/prop_dir/IMPLICIT_DEPENDS_INCLUDE_TRANSFORM.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_dir/IMPLICIT_DEPENDS_INCLUDE_TRANSFORM.rst
rename to share/cmake-3.10/Help/prop_dir/IMPLICIT_DEPENDS_INCLUDE_TRANSFORM.rst
diff --git a/share/cmake-3.6/Help/prop_dir/INCLUDE_DIRECTORIES.rst b/share/cmake-3.10/Help/prop_dir/INCLUDE_DIRECTORIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_dir/INCLUDE_DIRECTORIES.rst
rename to share/cmake-3.10/Help/prop_dir/INCLUDE_DIRECTORIES.rst
diff --git a/share/cmake-3.6/Help/prop_dir/INCLUDE_REGULAR_EXPRESSION.rst b/share/cmake-3.10/Help/prop_dir/INCLUDE_REGULAR_EXPRESSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_dir/INCLUDE_REGULAR_EXPRESSION.rst
rename to share/cmake-3.10/Help/prop_dir/INCLUDE_REGULAR_EXPRESSION.rst
diff --git a/share/cmake-3.6/Help/prop_dir/INTERPROCEDURAL_OPTIMIZATION.rst b/share/cmake-3.10/Help/prop_dir/INTERPROCEDURAL_OPTIMIZATION.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_dir/INTERPROCEDURAL_OPTIMIZATION.rst
rename to share/cmake-3.10/Help/prop_dir/INTERPROCEDURAL_OPTIMIZATION.rst
diff --git a/share/cmake-3.6/Help/prop_dir/INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst b/share/cmake-3.10/Help/prop_dir/INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_dir/INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst
rename to share/cmake-3.10/Help/prop_dir/INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst
diff --git a/share/cmake-3.10/Help/prop_dir/LABELS.rst b/share/cmake-3.10/Help/prop_dir/LABELS.rst
new file mode 100644
index 0000000..de27d90
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_dir/LABELS.rst
@@ -0,0 +1,13 @@
+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.6/Help/prop_dir/LINK_DIRECTORIES.rst b/share/cmake-3.10/Help/prop_dir/LINK_DIRECTORIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_dir/LINK_DIRECTORIES.rst
rename to share/cmake-3.10/Help/prop_dir/LINK_DIRECTORIES.rst
diff --git a/share/cmake-3.6/Help/prop_dir/LISTFILE_STACK.rst b/share/cmake-3.10/Help/prop_dir/LISTFILE_STACK.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_dir/LISTFILE_STACK.rst
rename to share/cmake-3.10/Help/prop_dir/LISTFILE_STACK.rst
diff --git a/share/cmake-3.6/Help/prop_dir/MACROS.rst b/share/cmake-3.10/Help/prop_dir/MACROS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_dir/MACROS.rst
rename to share/cmake-3.10/Help/prop_dir/MACROS.rst
diff --git a/share/cmake-3.6/Help/prop_dir/PARENT_DIRECTORY.rst b/share/cmake-3.10/Help/prop_dir/PARENT_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_dir/PARENT_DIRECTORY.rst
rename to share/cmake-3.10/Help/prop_dir/PARENT_DIRECTORY.rst
diff --git a/share/cmake-3.6/Help/prop_dir/RULE_LAUNCH_COMPILE.rst b/share/cmake-3.10/Help/prop_dir/RULE_LAUNCH_COMPILE.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_dir/RULE_LAUNCH_COMPILE.rst
rename to share/cmake-3.10/Help/prop_dir/RULE_LAUNCH_COMPILE.rst
diff --git a/share/cmake-3.6/Help/prop_dir/RULE_LAUNCH_CUSTOM.rst b/share/cmake-3.10/Help/prop_dir/RULE_LAUNCH_CUSTOM.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_dir/RULE_LAUNCH_CUSTOM.rst
rename to share/cmake-3.10/Help/prop_dir/RULE_LAUNCH_CUSTOM.rst
diff --git a/share/cmake-3.6/Help/prop_dir/RULE_LAUNCH_LINK.rst b/share/cmake-3.10/Help/prop_dir/RULE_LAUNCH_LINK.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_dir/RULE_LAUNCH_LINK.rst
rename to share/cmake-3.10/Help/prop_dir/RULE_LAUNCH_LINK.rst
diff --git a/share/cmake-3.10/Help/prop_dir/SOURCE_DIR.rst b/share/cmake-3.10/Help/prop_dir/SOURCE_DIR.rst
new file mode 100644
index 0000000..ac98c3b
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_dir/SOURCE_DIR.rst
@@ -0,0 +1,5 @@
+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.10/Help/prop_dir/SUBDIRECTORIES.rst b/share/cmake-3.10/Help/prop_dir/SUBDIRECTORIES.rst
new file mode 100644
index 0000000..2c2ea77
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_dir/SUBDIRECTORIES.rst
@@ -0,0 +1,15 @@
+SUBDIRECTORIES
+--------------
+
+This read-only directory property contains a
+:ref:`;-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.10/Help/prop_dir/TEST_INCLUDE_FILE.rst b/share/cmake-3.10/Help/prop_dir/TEST_INCLUDE_FILE.rst
new file mode 100644
index 0000000..31b2382
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_dir/TEST_INCLUDE_FILE.rst
@@ -0,0 +1,9 @@
+TEST_INCLUDE_FILE
+-----------------
+
+Deprecated.  Use :prop_dir:`TEST_INCLUDE_FILES` instead.
+
+A cmake file that will be included when ctest is run.
+
+If you specify ``TEST_INCLUDE_FILE``, that file will be included and
+processed when ctest is run on the directory.
diff --git a/share/cmake-3.10/Help/prop_dir/TEST_INCLUDE_FILES.rst b/share/cmake-3.10/Help/prop_dir/TEST_INCLUDE_FILES.rst
new file mode 100644
index 0000000..c3e4602
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_dir/TEST_INCLUDE_FILES.rst
@@ -0,0 +1,7 @@
+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.6/Help/prop_dir/VARIABLES.rst b/share/cmake-3.10/Help/prop_dir/VARIABLES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_dir/VARIABLES.rst
rename to share/cmake-3.10/Help/prop_dir/VARIABLES.rst
diff --git a/share/cmake-3.10/Help/prop_dir/VS_GLOBAL_SECTION_POST_section.rst b/share/cmake-3.10/Help/prop_dir/VS_GLOBAL_SECTION_POST_section.rst
new file mode 100644
index 0000000..a316abe
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_dir/VS_GLOBAL_SECTION_POST_section.rst
@@ -0,0 +1,31 @@
+VS_GLOBAL_SECTION_POST_<section>
+--------------------------------
+
+Specify a postSolution global section in Visual Studio.
+
+Setting a property like this generates an entry of the following form
+in the solution file:
+
+::
+
+  GlobalSection(<section>) = postSolution
+    <contents based on property value>
+  EndGlobalSection
+
+The property must be set to a semicolon-separated list of key=value
+pairs.  Each such pair will be transformed into an entry in the
+solution global section.  Whitespace around key and value is ignored.
+List elements which do not contain an equal sign are skipped.
+
+This property only works for Visual Studio 8 and above; it is ignored
+on other generators.  The property only applies when set on a
+directory whose CMakeLists.txt contains a project() command.
+
+Note that CMake generates postSolution sections ExtensibilityGlobals
+and ExtensibilityAddIns by default.  If you set the corresponding
+property, it will override the default section.  For example, setting
+VS_GLOBAL_SECTION_POST_ExtensibilityGlobals will override the default
+contents of the ExtensibilityGlobals section, while keeping
+ExtensibilityAddIns on its default.  However, CMake will always
+add a ``SolutionGuid`` to the ``ExtensibilityGlobals`` section
+if it is not specified explicitly.
diff --git a/share/cmake-3.10/Help/prop_dir/VS_GLOBAL_SECTION_PRE_section.rst b/share/cmake-3.10/Help/prop_dir/VS_GLOBAL_SECTION_PRE_section.rst
new file mode 100644
index 0000000..200e8e6
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_dir/VS_GLOBAL_SECTION_PRE_section.rst
@@ -0,0 +1,22 @@
+VS_GLOBAL_SECTION_PRE_<section>
+-------------------------------
+
+Specify a preSolution global section in Visual Studio.
+
+Setting a property like this generates an entry of the following form
+in the solution file:
+
+::
+
+  GlobalSection(<section>) = preSolution
+    <contents based on property value>
+  EndGlobalSection
+
+The property must be set to a semicolon-separated list of key=value
+pairs.  Each such pair will be transformed into an entry in the
+solution global section.  Whitespace around key and value is ignored.
+List elements which do not contain an equal sign are skipped.
+
+This property only works for Visual Studio 8 and above; it is ignored
+on other generators.  The property only applies when set on a
+directory whose CMakeLists.txt contains a project() command.
diff --git a/share/cmake-3.10/Help/prop_dir/VS_STARTUP_PROJECT.rst b/share/cmake-3.10/Help/prop_dir/VS_STARTUP_PROJECT.rst
new file mode 100644
index 0000000..04441b6
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_dir/VS_STARTUP_PROJECT.rst
@@ -0,0 +1,18 @@
+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 correpsonding 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.6/Help/prop_gbl/ALLOW_DUPLICATE_CUSTOM_TARGETS.rst b/share/cmake-3.10/Help/prop_gbl/ALLOW_DUPLICATE_CUSTOM_TARGETS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_gbl/ALLOW_DUPLICATE_CUSTOM_TARGETS.rst
rename to share/cmake-3.10/Help/prop_gbl/ALLOW_DUPLICATE_CUSTOM_TARGETS.rst
diff --git a/share/cmake-3.10/Help/prop_gbl/AUTOGEN_SOURCE_GROUP.rst b/share/cmake-3.10/Help/prop_gbl/AUTOGEN_SOURCE_GROUP.rst
new file mode 100644
index 0000000..d294eb1
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_gbl/AUTOGEN_SOURCE_GROUP.rst
@@ -0,0 +1,15 @@
+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.10/Help/prop_gbl/AUTOGEN_TARGETS_FOLDER.rst b/share/cmake-3.10/Help/prop_gbl/AUTOGEN_TARGETS_FOLDER.rst
new file mode 100644
index 0000000..0b747b2
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_gbl/AUTOGEN_TARGETS_FOLDER.rst
@@ -0,0 +1,9 @@
+AUTOGEN_TARGETS_FOLDER
+----------------------
+
+Name of :prop_tgt:`FOLDER` for ``*_autogen`` targets that are added
+automatically by CMake for targets for which :prop_tgt:`AUTOMOC` is enabled.
+
+If not set, CMake uses the :prop_tgt:`FOLDER` property of the parent target as a
+default value for this property.  See also the documentation for the
+:prop_tgt:`FOLDER` target property and the :prop_tgt:`AUTOMOC` target property.
diff --git a/share/cmake-3.10/Help/prop_gbl/AUTOMOC_SOURCE_GROUP.rst b/share/cmake-3.10/Help/prop_gbl/AUTOMOC_SOURCE_GROUP.rst
new file mode 100644
index 0000000..2455dc7
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_gbl/AUTOMOC_SOURCE_GROUP.rst
@@ -0,0 +1,7 @@
+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.10/Help/prop_gbl/AUTOMOC_TARGETS_FOLDER.rst b/share/cmake-3.10/Help/prop_gbl/AUTOMOC_TARGETS_FOLDER.rst
new file mode 100644
index 0000000..17666e4
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_gbl/AUTOMOC_TARGETS_FOLDER.rst
@@ -0,0 +1,11 @@
+AUTOMOC_TARGETS_FOLDER
+----------------------
+
+Name of :prop_tgt:`FOLDER` for ``*_autogen`` targets that are added automatically by
+CMake for targets for which :prop_tgt:`AUTOMOC` is enabled.
+
+This property is obsolete.  Use :prop_gbl:`AUTOGEN_TARGETS_FOLDER` instead.
+
+If not set, CMake uses the :prop_tgt:`FOLDER` property of the parent target as a
+default value for this property.  See also the documentation for the
+:prop_tgt:`FOLDER` target property and the :prop_tgt:`AUTOMOC` target property.
diff --git a/share/cmake-3.10/Help/prop_gbl/AUTORCC_SOURCE_GROUP.rst b/share/cmake-3.10/Help/prop_gbl/AUTORCC_SOURCE_GROUP.rst
new file mode 100644
index 0000000..65ea95b
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_gbl/AUTORCC_SOURCE_GROUP.rst
@@ -0,0 +1,7 @@
+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.10/Help/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.rst b/share/cmake-3.10/Help/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.rst
new file mode 100644
index 0000000..2ad8157
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -0,0 +1,315 @@
+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 aware of C++ 98.
+
+``cxx_std_11``
+  Compiler mode is aware of C++ 11.
+
+``cxx_std_14``
+  Compiler mode is aware of C++ 14.
+
+``cxx_std_17``
+  Compiler mode is aware of C++ 17.
+
+``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.10/Help/prop_gbl/CMAKE_C_KNOWN_FEATURES.rst b/share/cmake-3.10/Help/prop_gbl/CMAKE_C_KNOWN_FEATURES.rst
new file mode 100644
index 0000000..3707fef
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_gbl/CMAKE_C_KNOWN_FEATURES.rst
@@ -0,0 +1,35 @@
+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 aware of C 90.
+
+``c_std_99``
+  Compiler mode is aware of C 99.
+
+``c_std_11``
+  Compiler mode is aware of 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.6/Help/prop_gbl/DEBUG_CONFIGURATIONS.rst b/share/cmake-3.10/Help/prop_gbl/DEBUG_CONFIGURATIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_gbl/DEBUG_CONFIGURATIONS.rst
rename to share/cmake-3.10/Help/prop_gbl/DEBUG_CONFIGURATIONS.rst
diff --git a/share/cmake-3.6/Help/prop_gbl/DISABLED_FEATURES.rst b/share/cmake-3.10/Help/prop_gbl/DISABLED_FEATURES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_gbl/DISABLED_FEATURES.rst
rename to share/cmake-3.10/Help/prop_gbl/DISABLED_FEATURES.rst
diff --git a/share/cmake-3.6/Help/prop_gbl/ECLIPSE_EXTRA_NATURES.rst b/share/cmake-3.10/Help/prop_gbl/ECLIPSE_EXTRA_NATURES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_gbl/ECLIPSE_EXTRA_NATURES.rst
rename to share/cmake-3.10/Help/prop_gbl/ECLIPSE_EXTRA_NATURES.rst
diff --git a/share/cmake-3.6/Help/prop_gbl/ENABLED_FEATURES.rst b/share/cmake-3.10/Help/prop_gbl/ENABLED_FEATURES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_gbl/ENABLED_FEATURES.rst
rename to share/cmake-3.10/Help/prop_gbl/ENABLED_FEATURES.rst
diff --git a/share/cmake-3.6/Help/prop_gbl/ENABLED_LANGUAGES.rst b/share/cmake-3.10/Help/prop_gbl/ENABLED_LANGUAGES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_gbl/ENABLED_LANGUAGES.rst
rename to share/cmake-3.10/Help/prop_gbl/ENABLED_LANGUAGES.rst
diff --git a/share/cmake-3.10/Help/prop_gbl/FIND_LIBRARY_USE_LIB32_PATHS.rst b/share/cmake-3.10/Help/prop_gbl/FIND_LIBRARY_USE_LIB32_PATHS.rst
new file mode 100644
index 0000000..8396026
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_gbl/FIND_LIBRARY_USE_LIB32_PATHS.rst
@@ -0,0 +1,12 @@
+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.10/Help/prop_gbl/FIND_LIBRARY_USE_LIB64_PATHS.rst b/share/cmake-3.10/Help/prop_gbl/FIND_LIBRARY_USE_LIB64_PATHS.rst
new file mode 100644
index 0000000..ed343ba
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_gbl/FIND_LIBRARY_USE_LIB64_PATHS.rst
@@ -0,0 +1,12 @@
+FIND_LIBRARY_USE_LIB64_PATHS
+----------------------------
+
+Whether :command:`find_library` should automatically search lib64
+directories.
+
+FIND_LIBRARY_USE_LIB64_PATHS is a boolean specifying whether the
+:command:`find_library` command should automatically search the lib64
+variant of directories called lib in the search path when building
+64-bit binaries.
+
+See also the :variable:`CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX` variable.
diff --git a/share/cmake-3.10/Help/prop_gbl/FIND_LIBRARY_USE_LIBX32_PATHS.rst b/share/cmake-3.10/Help/prop_gbl/FIND_LIBRARY_USE_LIBX32_PATHS.rst
new file mode 100644
index 0000000..b87b09b
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_gbl/FIND_LIBRARY_USE_LIBX32_PATHS.rst
@@ -0,0 +1,12 @@
+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.6/Help/prop_gbl/FIND_LIBRARY_USE_OPENBSD_VERSIONING.rst b/share/cmake-3.10/Help/prop_gbl/FIND_LIBRARY_USE_OPENBSD_VERSIONING.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_gbl/FIND_LIBRARY_USE_OPENBSD_VERSIONING.rst
rename to share/cmake-3.10/Help/prop_gbl/FIND_LIBRARY_USE_OPENBSD_VERSIONING.rst
diff --git a/share/cmake-3.10/Help/prop_gbl/GENERATOR_IS_MULTI_CONFIG.rst b/share/cmake-3.10/Help/prop_gbl/GENERATOR_IS_MULTI_CONFIG.rst
new file mode 100644
index 0000000..b8ec8a6
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_gbl/GENERATOR_IS_MULTI_CONFIG.rst
@@ -0,0 +1,9 @@
+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.6/Help/prop_gbl/GLOBAL_DEPENDS_DEBUG_MODE.rst b/share/cmake-3.10/Help/prop_gbl/GLOBAL_DEPENDS_DEBUG_MODE.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_gbl/GLOBAL_DEPENDS_DEBUG_MODE.rst
rename to share/cmake-3.10/Help/prop_gbl/GLOBAL_DEPENDS_DEBUG_MODE.rst
diff --git a/share/cmake-3.6/Help/prop_gbl/GLOBAL_DEPENDS_NO_CYCLES.rst b/share/cmake-3.10/Help/prop_gbl/GLOBAL_DEPENDS_NO_CYCLES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_gbl/GLOBAL_DEPENDS_NO_CYCLES.rst
rename to share/cmake-3.10/Help/prop_gbl/GLOBAL_DEPENDS_NO_CYCLES.rst
diff --git a/share/cmake-3.6/Help/prop_gbl/IN_TRY_COMPILE.rst b/share/cmake-3.10/Help/prop_gbl/IN_TRY_COMPILE.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_gbl/IN_TRY_COMPILE.rst
rename to share/cmake-3.10/Help/prop_gbl/IN_TRY_COMPILE.rst
diff --git a/share/cmake-3.6/Help/prop_gbl/JOB_POOLS.rst b/share/cmake-3.10/Help/prop_gbl/JOB_POOLS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_gbl/JOB_POOLS.rst
rename to share/cmake-3.10/Help/prop_gbl/JOB_POOLS.rst
diff --git a/share/cmake-3.6/Help/prop_gbl/PACKAGES_FOUND.rst b/share/cmake-3.10/Help/prop_gbl/PACKAGES_FOUND.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_gbl/PACKAGES_FOUND.rst
rename to share/cmake-3.10/Help/prop_gbl/PACKAGES_FOUND.rst
diff --git a/share/cmake-3.6/Help/prop_gbl/PACKAGES_NOT_FOUND.rst b/share/cmake-3.10/Help/prop_gbl/PACKAGES_NOT_FOUND.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_gbl/PACKAGES_NOT_FOUND.rst
rename to share/cmake-3.10/Help/prop_gbl/PACKAGES_NOT_FOUND.rst
diff --git a/share/cmake-3.6/Help/prop_gbl/PREDEFINED_TARGETS_FOLDER.rst b/share/cmake-3.10/Help/prop_gbl/PREDEFINED_TARGETS_FOLDER.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_gbl/PREDEFINED_TARGETS_FOLDER.rst
rename to share/cmake-3.10/Help/prop_gbl/PREDEFINED_TARGETS_FOLDER.rst
diff --git a/share/cmake-3.6/Help/prop_gbl/REPORT_UNDEFINED_PROPERTIES.rst b/share/cmake-3.10/Help/prop_gbl/REPORT_UNDEFINED_PROPERTIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_gbl/REPORT_UNDEFINED_PROPERTIES.rst
rename to share/cmake-3.10/Help/prop_gbl/REPORT_UNDEFINED_PROPERTIES.rst
diff --git a/share/cmake-3.6/Help/prop_gbl/RULE_LAUNCH_COMPILE.rst b/share/cmake-3.10/Help/prop_gbl/RULE_LAUNCH_COMPILE.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_gbl/RULE_LAUNCH_COMPILE.rst
rename to share/cmake-3.10/Help/prop_gbl/RULE_LAUNCH_COMPILE.rst
diff --git a/share/cmake-3.6/Help/prop_gbl/RULE_LAUNCH_CUSTOM.rst b/share/cmake-3.10/Help/prop_gbl/RULE_LAUNCH_CUSTOM.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_gbl/RULE_LAUNCH_CUSTOM.rst
rename to share/cmake-3.10/Help/prop_gbl/RULE_LAUNCH_CUSTOM.rst
diff --git a/share/cmake-3.6/Help/prop_gbl/RULE_LAUNCH_LINK.rst b/share/cmake-3.10/Help/prop_gbl/RULE_LAUNCH_LINK.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_gbl/RULE_LAUNCH_LINK.rst
rename to share/cmake-3.10/Help/prop_gbl/RULE_LAUNCH_LINK.rst
diff --git a/share/cmake-3.6/Help/prop_gbl/RULE_MESSAGES.rst b/share/cmake-3.10/Help/prop_gbl/RULE_MESSAGES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_gbl/RULE_MESSAGES.rst
rename to share/cmake-3.10/Help/prop_gbl/RULE_MESSAGES.rst
diff --git a/share/cmake-3.6/Help/prop_gbl/TARGET_ARCHIVES_MAY_BE_SHARED_LIBS.rst b/share/cmake-3.10/Help/prop_gbl/TARGET_ARCHIVES_MAY_BE_SHARED_LIBS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_gbl/TARGET_ARCHIVES_MAY_BE_SHARED_LIBS.rst
rename to share/cmake-3.10/Help/prop_gbl/TARGET_ARCHIVES_MAY_BE_SHARED_LIBS.rst
diff --git a/share/cmake-3.6/Help/prop_gbl/TARGET_MESSAGES.rst b/share/cmake-3.10/Help/prop_gbl/TARGET_MESSAGES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_gbl/TARGET_MESSAGES.rst
rename to share/cmake-3.10/Help/prop_gbl/TARGET_MESSAGES.rst
diff --git a/share/cmake-3.6/Help/prop_gbl/TARGET_SUPPORTS_SHARED_LIBS.rst b/share/cmake-3.10/Help/prop_gbl/TARGET_SUPPORTS_SHARED_LIBS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_gbl/TARGET_SUPPORTS_SHARED_LIBS.rst
rename to share/cmake-3.10/Help/prop_gbl/TARGET_SUPPORTS_SHARED_LIBS.rst
diff --git a/share/cmake-3.6/Help/prop_gbl/USE_FOLDERS.rst b/share/cmake-3.10/Help/prop_gbl/USE_FOLDERS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_gbl/USE_FOLDERS.rst
rename to share/cmake-3.10/Help/prop_gbl/USE_FOLDERS.rst
diff --git a/share/cmake-3.10/Help/prop_gbl/XCODE_EMIT_EFFECTIVE_PLATFORM_NAME.rst b/share/cmake-3.10/Help/prop_gbl/XCODE_EMIT_EFFECTIVE_PLATFORM_NAME.rst
new file mode 100644
index 0000000..9a6086e
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_gbl/XCODE_EMIT_EFFECTIVE_PLATFORM_NAME.rst
@@ -0,0 +1,24 @@
+XCODE_EMIT_EFFECTIVE_PLATFORM_NAME
+----------------------------------
+
+Control emission of ``EFFECTIVE_PLATFORM_NAME`` by the 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 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.6/Help/prop_inst/CPACK_DESKTOP_SHORTCUTS.rst b/share/cmake-3.10/Help/prop_inst/CPACK_DESKTOP_SHORTCUTS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_inst/CPACK_DESKTOP_SHORTCUTS.rst
rename to share/cmake-3.10/Help/prop_inst/CPACK_DESKTOP_SHORTCUTS.rst
diff --git a/share/cmake-3.6/Help/prop_inst/CPACK_NEVER_OVERWRITE.rst b/share/cmake-3.10/Help/prop_inst/CPACK_NEVER_OVERWRITE.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_inst/CPACK_NEVER_OVERWRITE.rst
rename to share/cmake-3.10/Help/prop_inst/CPACK_NEVER_OVERWRITE.rst
diff --git a/share/cmake-3.6/Help/prop_inst/CPACK_PERMANENT.rst b/share/cmake-3.10/Help/prop_inst/CPACK_PERMANENT.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_inst/CPACK_PERMANENT.rst
rename to share/cmake-3.10/Help/prop_inst/CPACK_PERMANENT.rst
diff --git a/share/cmake-3.6/Help/prop_inst/CPACK_STARTUP_SHORTCUTS.rst b/share/cmake-3.10/Help/prop_inst/CPACK_STARTUP_SHORTCUTS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_inst/CPACK_STARTUP_SHORTCUTS.rst
rename to share/cmake-3.10/Help/prop_inst/CPACK_STARTUP_SHORTCUTS.rst
diff --git a/share/cmake-3.6/Help/prop_inst/CPACK_START_MENU_SHORTCUTS.rst b/share/cmake-3.10/Help/prop_inst/CPACK_START_MENU_SHORTCUTS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_inst/CPACK_START_MENU_SHORTCUTS.rst
rename to share/cmake-3.10/Help/prop_inst/CPACK_START_MENU_SHORTCUTS.rst
diff --git a/share/cmake-3.6/Help/prop_inst/CPACK_WIX_ACL.rst b/share/cmake-3.10/Help/prop_inst/CPACK_WIX_ACL.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_inst/CPACK_WIX_ACL.rst
rename to share/cmake-3.10/Help/prop_inst/CPACK_WIX_ACL.rst
diff --git a/share/cmake-3.6/Help/prop_sf/ABSTRACT.rst b/share/cmake-3.10/Help/prop_sf/ABSTRACT.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_sf/ABSTRACT.rst
rename to share/cmake-3.10/Help/prop_sf/ABSTRACT.rst
diff --git a/share/cmake-3.10/Help/prop_sf/AUTORCC_OPTIONS.rst b/share/cmake-3.10/Help/prop_sf/AUTORCC_OPTIONS.rst
new file mode 100644
index 0000000..2bec033
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_sf/AUTORCC_OPTIONS.rst
@@ -0,0 +1,22 @@
+AUTORCC_OPTIONS
+---------------
+
+Additional options for ``rcc`` when using :prop_tgt:`AUTORCC`
+
+This property holds additional command line options which will be used when
+``rcc`` is executed during the build via :prop_tgt:`AUTORCC`, i.e. it is equivalent to the
+optional ``OPTIONS`` argument of the :module:`qt4_add_resources() <FindQt4>` macro.
+
+By default it is empty.
+
+The options set on the ``.qrc`` source file may override
+:prop_tgt:`AUTORCC_OPTIONS` set on the target.
+
+EXAMPLE
+^^^^^^^
+
+.. code-block:: cmake
+
+  # ...
+  set_property(SOURCE resources.qrc PROPERTY AUTORCC_OPTIONS "--compress;9")
+  # ...
diff --git a/share/cmake-3.10/Help/prop_sf/AUTOUIC_OPTIONS.rst b/share/cmake-3.10/Help/prop_sf/AUTOUIC_OPTIONS.rst
new file mode 100644
index 0000000..e2f47ec
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_sf/AUTOUIC_OPTIONS.rst
@@ -0,0 +1,23 @@
+AUTOUIC_OPTIONS
+---------------
+
+Additional options for ``uic`` when using :prop_tgt:`AUTOUIC`
+
+This property holds additional command line options
+which will be used when ``uic`` is executed during the build via
+:prop_tgt:`AUTOUIC`, i.e. it is equivalent to the optional ``OPTIONS``
+argument of the :module:`qt4_wrap_ui() <FindQt4>` macro.
+
+By default it is empty.
+
+The options set on the ``.ui`` source file may override
+:prop_tgt:`AUTOUIC_OPTIONS` set on the target.
+
+EXAMPLE
+^^^^^^^
+
+.. code-block:: cmake
+
+  # ...
+  set_property(SOURCE widget.ui PROPERTY AUTOUIC_OPTIONS "--no-protection")
+  # ...
diff --git a/share/cmake-3.6/Help/prop_sf/COMPILE_DEFINITIONS.rst b/share/cmake-3.10/Help/prop_sf/COMPILE_DEFINITIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_sf/COMPILE_DEFINITIONS.rst
rename to share/cmake-3.10/Help/prop_sf/COMPILE_DEFINITIONS.rst
diff --git a/share/cmake-3.6/Help/prop_sf/COMPILE_DEFINITIONS_CONFIG.rst b/share/cmake-3.10/Help/prop_sf/COMPILE_DEFINITIONS_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_sf/COMPILE_DEFINITIONS_CONFIG.rst
rename to share/cmake-3.10/Help/prop_sf/COMPILE_DEFINITIONS_CONFIG.rst
diff --git a/share/cmake-3.10/Help/prop_sf/COMPILE_FLAGS.rst b/share/cmake-3.10/Help/prop_sf/COMPILE_FLAGS.rst
new file mode 100644
index 0000000..1012164
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_sf/COMPILE_FLAGS.rst
@@ -0,0 +1,15 @@
+COMPILE_FLAGS
+-------------
+
+Additional flags to be added when compiling this source file.
+
+These flags will be added to the list of compile flags when this
+source file builds.  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.
diff --git a/share/cmake-3.6/Help/prop_sf/EXTERNAL_OBJECT.rst b/share/cmake-3.10/Help/prop_sf/EXTERNAL_OBJECT.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_sf/EXTERNAL_OBJECT.rst
rename to share/cmake-3.10/Help/prop_sf/EXTERNAL_OBJECT.rst
diff --git a/share/cmake-3.6/Help/prop_sf/Fortran_FORMAT.rst b/share/cmake-3.10/Help/prop_sf/Fortran_FORMAT.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_sf/Fortran_FORMAT.rst
rename to share/cmake-3.10/Help/prop_sf/Fortran_FORMAT.rst
diff --git a/share/cmake-3.6/Help/prop_sf/GENERATED.rst b/share/cmake-3.10/Help/prop_sf/GENERATED.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_sf/GENERATED.rst
rename to share/cmake-3.10/Help/prop_sf/GENERATED.rst
diff --git a/share/cmake-3.10/Help/prop_sf/HEADER_FILE_ONLY.rst b/share/cmake-3.10/Help/prop_sf/HEADER_FILE_ONLY.rst
new file mode 100644
index 0000000..71d62ae
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_sf/HEADER_FILE_ONLY.rst
@@ -0,0 +1,24 @@
+HEADER_FILE_ONLY
+----------------
+
+Is this source file only a header file.
+
+A property on a source file that indicates if the source file is a
+header file with no associated implementation.  This is set
+automatically based on the file extension and is used by CMake to
+determine if certain dependency information should be computed.
+
+By setting this property to ``ON``, you can disable compilation of
+the given source file, even if it should be compiled because it is
+part of the library's/executable's sources.
+
+This is useful if you have some source files which you somehow
+pre-process, and then add these pre-processed sources via
+:command:`add_library` or :command:`add_executable`. Normally, in IDE,
+there would be no reference of the original sources, only of these
+pre-processed sources. So by setting this property for all the original
+source files to ``ON``, and then either calling :command:`add_library`
+or :command:`add_executable` while passing both the pre-processed
+sources and the original sources, or by using :command:`target_sources`
+to add original source files will do exactly what would one expect, i.e.
+the original source files would be visible in IDE, and will not be built.
diff --git a/share/cmake-3.6/Help/prop_sf/KEEP_EXTENSION.rst b/share/cmake-3.10/Help/prop_sf/KEEP_EXTENSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_sf/KEEP_EXTENSION.rst
rename to share/cmake-3.10/Help/prop_sf/KEEP_EXTENSION.rst
diff --git a/share/cmake-3.6/Help/prop_sf/LABELS.rst b/share/cmake-3.10/Help/prop_sf/LABELS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_sf/LABELS.rst
rename to share/cmake-3.10/Help/prop_sf/LABELS.rst
diff --git a/share/cmake-3.6/Help/prop_sf/LANGUAGE.rst b/share/cmake-3.10/Help/prop_sf/LANGUAGE.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_sf/LANGUAGE.rst
rename to share/cmake-3.10/Help/prop_sf/LANGUAGE.rst
diff --git a/share/cmake-3.6/Help/prop_sf/LOCATION.rst b/share/cmake-3.10/Help/prop_sf/LOCATION.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_sf/LOCATION.rst
rename to share/cmake-3.10/Help/prop_sf/LOCATION.rst
diff --git a/share/cmake-3.10/Help/prop_sf/MACOSX_PACKAGE_LOCATION.rst b/share/cmake-3.10/Help/prop_sf/MACOSX_PACKAGE_LOCATION.rst
new file mode 100644
index 0000000..a064afa
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_sf/MACOSX_PACKAGE_LOCATION.rst
@@ -0,0 +1,30 @@
+MACOSX_PACKAGE_LOCATION
+-----------------------
+
+Place a source file inside a Application Bundle
+(:prop_tgt:`MACOSX_BUNDLE`), Core Foundation Bundle (:prop_tgt:`BUNDLE`),
+or Framework Bundle (:prop_tgt:`FRAMEWORK`).  It is applicable for OS X
+and iOS.
+
+Executable targets with the :prop_tgt:`MACOSX_BUNDLE` property set are
+built as OS X or iOS application bundles on Apple platforms.  Shared
+library targets with the :prop_tgt:`FRAMEWORK` property set are built as
+OS X or iOS frameworks on Apple platforms.  Module library targets with
+the :prop_tgt:`BUNDLE` property set are built as OS X ``CFBundle`` bundles
+on Apple platforms.  Source files listed in the target with this property
+set will be copied to a directory inside the bundle or framework content
+folder specified by the property value.  For OS X Application Bundles the
+content folder is ``<name>.app/Contents``.  For OS X Frameworks the
+content folder is ``<name>.framework/Versions/<version>``.  For OS X
+CFBundles the content folder is ``<name>.bundle/Contents`` (unless the
+extension is changed).  See the :prop_tgt:`PUBLIC_HEADER`,
+:prop_tgt:`PRIVATE_HEADER`, and :prop_tgt:`RESOURCE` target properties for
+specifying files meant for ``Headers``, ``PrivateHeaders``, or
+``Resources`` directories.
+
+If the specified location is equal to ``Resources``, the resulting location
+will be the same as if the :prop_tgt:`RESOURCE` property had been used. If
+the specified location is a sub-folder of ``Resources``, it will be placed
+into the respective sub-folder. Note: For iOS Apple uses a flat bundle layout
+where no ``Resources`` folder exist. Therefore CMake strips the ``Resources``
+folder name from the specified location.
diff --git a/share/cmake-3.6/Help/prop_sf/OBJECT_DEPENDS.rst b/share/cmake-3.10/Help/prop_sf/OBJECT_DEPENDS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_sf/OBJECT_DEPENDS.rst
rename to share/cmake-3.10/Help/prop_sf/OBJECT_DEPENDS.rst
diff --git a/share/cmake-3.6/Help/prop_sf/OBJECT_OUTPUTS.rst b/share/cmake-3.10/Help/prop_sf/OBJECT_OUTPUTS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_sf/OBJECT_OUTPUTS.rst
rename to share/cmake-3.10/Help/prop_sf/OBJECT_OUTPUTS.rst
diff --git a/share/cmake-3.10/Help/prop_sf/SKIP_AUTOGEN.rst b/share/cmake-3.10/Help/prop_sf/SKIP_AUTOGEN.rst
new file mode 100644
index 0000000..f31185a
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_sf/SKIP_AUTOGEN.rst
@@ -0,0 +1,17 @@
+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.10/Help/prop_sf/SKIP_AUTOMOC.rst b/share/cmake-3.10/Help/prop_sf/SKIP_AUTOMOC.rst
new file mode 100644
index 0000000..a929448
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_sf/SKIP_AUTOMOC.rst
@@ -0,0 +1,15 @@
+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.10/Help/prop_sf/SKIP_AUTORCC.rst b/share/cmake-3.10/Help/prop_sf/SKIP_AUTORCC.rst
new file mode 100644
index 0000000..bccccfc
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_sf/SKIP_AUTORCC.rst
@@ -0,0 +1,15 @@
+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.10/Help/prop_sf/SKIP_AUTOUIC.rst b/share/cmake-3.10/Help/prop_sf/SKIP_AUTOUIC.rst
new file mode 100644
index 0000000..8c962db
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_sf/SKIP_AUTOUIC.rst
@@ -0,0 +1,20 @@
+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.6/Help/prop_sf/SYMBOLIC.rst b/share/cmake-3.10/Help/prop_sf/SYMBOLIC.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_sf/SYMBOLIC.rst
rename to share/cmake-3.10/Help/prop_sf/SYMBOLIC.rst
diff --git a/share/cmake-3.10/Help/prop_sf/VS_COPY_TO_OUT_DIR.rst b/share/cmake-3.10/Help/prop_sf/VS_COPY_TO_OUT_DIR.rst
new file mode 100644
index 0000000..16c8d83
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_sf/VS_COPY_TO_OUT_DIR.rst
@@ -0,0 +1,6 @@
+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.10/Help/prop_sf/VS_CSHARP_tagname.rst b/share/cmake-3.10/Help/prop_sf/VS_CSHARP_tagname.rst
new file mode 100644
index 0000000..d42159f
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_sf/VS_CSHARP_tagname.rst
@@ -0,0 +1,19 @@
+VS_CSHARP_<tagname>
+-------------------
+
+Visual Studio and CSharp source-file-specific configuration.
+
+Tell the Visual Studio generator 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.6/Help/prop_sf/VS_DEPLOYMENT_CONTENT.rst b/share/cmake-3.10/Help/prop_sf/VS_DEPLOYMENT_CONTENT.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_sf/VS_DEPLOYMENT_CONTENT.rst
rename to share/cmake-3.10/Help/prop_sf/VS_DEPLOYMENT_CONTENT.rst
diff --git a/share/cmake-3.6/Help/prop_sf/VS_DEPLOYMENT_LOCATION.rst b/share/cmake-3.10/Help/prop_sf/VS_DEPLOYMENT_LOCATION.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_sf/VS_DEPLOYMENT_LOCATION.rst
rename to share/cmake-3.10/Help/prop_sf/VS_DEPLOYMENT_LOCATION.rst
diff --git a/share/cmake-3.10/Help/prop_sf/VS_INCLUDE_IN_VSIX.rst b/share/cmake-3.10/Help/prop_sf/VS_INCLUDE_IN_VSIX.rst
new file mode 100644
index 0000000..30f471d
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_sf/VS_INCLUDE_IN_VSIX.rst
@@ -0,0 +1,6 @@
+VS_INCLUDE_IN_VSIX
+------------------
+
+Boolean property to specify if the file should be included within a VSIX
+extension package. This is needed for development of Visual Studio
+extensions.
diff --git a/share/cmake-3.10/Help/prop_sf/VS_RESOURCE_GENERATOR.rst b/share/cmake-3.10/Help/prop_sf/VS_RESOURCE_GENERATOR.rst
new file mode 100644
index 0000000..97e5aac
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_sf/VS_RESOURCE_GENERATOR.rst
@@ -0,0 +1,8 @@
+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.6/Help/prop_sf/VS_SHADER_ENTRYPOINT.rst b/share/cmake-3.10/Help/prop_sf/VS_SHADER_ENTRYPOINT.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_sf/VS_SHADER_ENTRYPOINT.rst
rename to share/cmake-3.10/Help/prop_sf/VS_SHADER_ENTRYPOINT.rst
diff --git a/share/cmake-3.6/Help/prop_sf/VS_SHADER_FLAGS.rst b/share/cmake-3.10/Help/prop_sf/VS_SHADER_FLAGS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_sf/VS_SHADER_FLAGS.rst
rename to share/cmake-3.10/Help/prop_sf/VS_SHADER_FLAGS.rst
diff --git a/share/cmake-3.6/Help/prop_sf/VS_SHADER_MODEL.rst b/share/cmake-3.10/Help/prop_sf/VS_SHADER_MODEL.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_sf/VS_SHADER_MODEL.rst
rename to share/cmake-3.10/Help/prop_sf/VS_SHADER_MODEL.rst
diff --git a/share/cmake-3.10/Help/prop_sf/VS_SHADER_OUTPUT_HEADER_FILE.rst b/share/cmake-3.10/Help/prop_sf/VS_SHADER_OUTPUT_HEADER_FILE.rst
new file mode 100644
index 0000000..e6763d3
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_sf/VS_SHADER_OUTPUT_HEADER_FILE.rst
@@ -0,0 +1,5 @@
+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.6/Help/prop_sf/VS_SHADER_TYPE.rst b/share/cmake-3.10/Help/prop_sf/VS_SHADER_TYPE.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_sf/VS_SHADER_TYPE.rst
rename to share/cmake-3.10/Help/prop_sf/VS_SHADER_TYPE.rst
diff --git a/share/cmake-3.10/Help/prop_sf/VS_SHADER_VARIABLE_NAME.rst b/share/cmake-3.10/Help/prop_sf/VS_SHADER_VARIABLE_NAME.rst
new file mode 100644
index 0000000..1a5e369
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_sf/VS_SHADER_VARIABLE_NAME.rst
@@ -0,0 +1,5 @@
+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.10/Help/prop_sf/VS_TOOL_OVERRIDE.rst b/share/cmake-3.10/Help/prop_sf/VS_TOOL_OVERRIDE.rst
new file mode 100644
index 0000000..8bdc5ca
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_sf/VS_TOOL_OVERRIDE.rst
@@ -0,0 +1,5 @@
+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.6/Help/prop_sf/VS_XAML_TYPE.rst b/share/cmake-3.10/Help/prop_sf/VS_XAML_TYPE.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_sf/VS_XAML_TYPE.rst
rename to share/cmake-3.10/Help/prop_sf/VS_XAML_TYPE.rst
diff --git a/share/cmake-3.6/Help/prop_sf/WRAP_EXCLUDE.rst b/share/cmake-3.10/Help/prop_sf/WRAP_EXCLUDE.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_sf/WRAP_EXCLUDE.rst
rename to share/cmake-3.10/Help/prop_sf/WRAP_EXCLUDE.rst
diff --git a/share/cmake-3.6/Help/prop_sf/XCODE_EXPLICIT_FILE_TYPE.rst b/share/cmake-3.10/Help/prop_sf/XCODE_EXPLICIT_FILE_TYPE.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_sf/XCODE_EXPLICIT_FILE_TYPE.rst
rename to share/cmake-3.10/Help/prop_sf/XCODE_EXPLICIT_FILE_TYPE.rst
diff --git a/share/cmake-3.10/Help/prop_sf/XCODE_FILE_ATTRIBUTES.rst b/share/cmake-3.10/Help/prop_sf/XCODE_FILE_ATTRIBUTES.rst
new file mode 100644
index 0000000..39e6966
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_sf/XCODE_FILE_ATTRIBUTES.rst
@@ -0,0 +1,11 @@
+XCODE_FILE_ATTRIBUTES
+---------------------
+
+Add values to the 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.6/Help/prop_sf/XCODE_LAST_KNOWN_FILE_TYPE.rst b/share/cmake-3.10/Help/prop_sf/XCODE_LAST_KNOWN_FILE_TYPE.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_sf/XCODE_LAST_KNOWN_FILE_TYPE.rst
rename to share/cmake-3.10/Help/prop_sf/XCODE_LAST_KNOWN_FILE_TYPE.rst
diff --git a/share/cmake-3.6/Help/prop_test/ATTACHED_FILES.rst b/share/cmake-3.10/Help/prop_test/ATTACHED_FILES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_test/ATTACHED_FILES.rst
rename to share/cmake-3.10/Help/prop_test/ATTACHED_FILES.rst
diff --git a/share/cmake-3.6/Help/prop_test/ATTACHED_FILES_ON_FAIL.rst b/share/cmake-3.10/Help/prop_test/ATTACHED_FILES_ON_FAIL.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_test/ATTACHED_FILES_ON_FAIL.rst
rename to share/cmake-3.10/Help/prop_test/ATTACHED_FILES_ON_FAIL.rst
diff --git a/share/cmake-3.6/Help/prop_test/COST.rst b/share/cmake-3.10/Help/prop_test/COST.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_test/COST.rst
rename to share/cmake-3.10/Help/prop_test/COST.rst
diff --git a/share/cmake-3.10/Help/prop_test/DEPENDS.rst b/share/cmake-3.10/Help/prop_test/DEPENDS.rst
new file mode 100644
index 0000000..89c7553
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_test/DEPENDS.rst
@@ -0,0 +1,10 @@
+DEPENDS
+-------
+
+Specifies that this test should only be run after the specified list of tests.
+
+Set this to a list of tests that must finish before this test is run. The
+results of those tests are not considered, the dependency relationship is
+purely for order of execution (i.e. it is really just a *run after*
+relationship). Consider using test fixtures with setup tests if a dependency
+with successful completion is required (see :prop_test:`FIXTURES_REQUIRED`).
diff --git a/share/cmake-3.10/Help/prop_test/DISABLED.rst b/share/cmake-3.10/Help/prop_test/DISABLED.rst
new file mode 100644
index 0000000..c18ae7f
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_test/DISABLED.rst
@@ -0,0 +1,15 @@
+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.6/Help/prop_test/ENVIRONMENT.rst b/share/cmake-3.10/Help/prop_test/ENVIRONMENT.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_test/ENVIRONMENT.rst
rename to share/cmake-3.10/Help/prop_test/ENVIRONMENT.rst
diff --git a/share/cmake-3.6/Help/prop_test/FAIL_REGULAR_EXPRESSION.rst b/share/cmake-3.10/Help/prop_test/FAIL_REGULAR_EXPRESSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_test/FAIL_REGULAR_EXPRESSION.rst
rename to share/cmake-3.10/Help/prop_test/FAIL_REGULAR_EXPRESSION.rst
diff --git a/share/cmake-3.10/Help/prop_test/FIXTURES_CLEANUP.rst b/share/cmake-3.10/Help/prop_test/FIXTURES_CLEANUP.rst
new file mode 100644
index 0000000..3075b4d
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_test/FIXTURES_CLEANUP.rst
@@ -0,0 +1,47 @@
+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.10/Help/prop_test/FIXTURES_REQUIRED.rst b/share/cmake-3.10/Help/prop_test/FIXTURES_REQUIRED.rst
new file mode 100644
index 0000000..e3f60c4
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_test/FIXTURES_REQUIRED.rst
@@ -0,0 +1,96 @@
+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.10/Help/prop_test/FIXTURES_SETUP.rst b/share/cmake-3.10/Help/prop_test/FIXTURES_SETUP.rst
new file mode 100644
index 0000000..fdb21cc
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_test/FIXTURES_SETUP.rst
@@ -0,0 +1,48 @@
+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.6/Help/prop_test/LABELS.rst b/share/cmake-3.10/Help/prop_test/LABELS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_test/LABELS.rst
rename to share/cmake-3.10/Help/prop_test/LABELS.rst
diff --git a/share/cmake-3.6/Help/prop_test/MEASUREMENT.rst b/share/cmake-3.10/Help/prop_test/MEASUREMENT.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_test/MEASUREMENT.rst
rename to share/cmake-3.10/Help/prop_test/MEASUREMENT.rst
diff --git a/share/cmake-3.6/Help/prop_test/PASS_REGULAR_EXPRESSION.rst b/share/cmake-3.10/Help/prop_test/PASS_REGULAR_EXPRESSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_test/PASS_REGULAR_EXPRESSION.rst
rename to share/cmake-3.10/Help/prop_test/PASS_REGULAR_EXPRESSION.rst
diff --git a/share/cmake-3.10/Help/prop_test/PROCESSORS.rst b/share/cmake-3.10/Help/prop_test/PROCESSORS.rst
new file mode 100644
index 0000000..a1211fb
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_test/PROCESSORS.rst
@@ -0,0 +1,13 @@
+PROCESSORS
+----------
+
+Set to specify how many process slots this test requires.
+
+Denotes the number of processors that this test will require.  This is
+typically used for MPI tests, and should be used in conjunction with
+the :command:`ctest_test` ``PARALLEL_LEVEL`` option.
+
+This will also be used to display a weighted test timing result in label and
+subproject summaries in the command line output of :manual:`ctest(1)`. The wall
+clock time for the test run will be multiplied by this property to give a
+better idea of how much cpu resource CTest allocated for the test.
diff --git a/share/cmake-3.6/Help/prop_test/REQUIRED_FILES.rst b/share/cmake-3.10/Help/prop_test/REQUIRED_FILES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_test/REQUIRED_FILES.rst
rename to share/cmake-3.10/Help/prop_test/REQUIRED_FILES.rst
diff --git a/share/cmake-3.10/Help/prop_test/RESOURCE_LOCK.rst b/share/cmake-3.10/Help/prop_test/RESOURCE_LOCK.rst
new file mode 100644
index 0000000..755e0aa
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_test/RESOURCE_LOCK.rst
@@ -0,0 +1,10 @@
+RESOURCE_LOCK
+-------------
+
+Specify a list of resources that are locked by this test.
+
+If multiple tests specify the same resource lock, they are guaranteed
+not to run concurrently.
+
+See also :prop_test:`FIXTURES_REQUIRED` if the resource requires any setup or
+cleanup steps.
diff --git a/share/cmake-3.6/Help/prop_test/RUN_SERIAL.rst b/share/cmake-3.10/Help/prop_test/RUN_SERIAL.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_test/RUN_SERIAL.rst
rename to share/cmake-3.10/Help/prop_test/RUN_SERIAL.rst
diff --git a/share/cmake-3.6/Help/prop_test/SKIP_RETURN_CODE.rst b/share/cmake-3.10/Help/prop_test/SKIP_RETURN_CODE.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_test/SKIP_RETURN_CODE.rst
rename to share/cmake-3.10/Help/prop_test/SKIP_RETURN_CODE.rst
diff --git a/share/cmake-3.6/Help/prop_test/TIMEOUT.rst b/share/cmake-3.10/Help/prop_test/TIMEOUT.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_test/TIMEOUT.rst
rename to share/cmake-3.10/Help/prop_test/TIMEOUT.rst
diff --git a/share/cmake-3.10/Help/prop_test/TIMEOUT_AFTER_MATCH.rst b/share/cmake-3.10/Help/prop_test/TIMEOUT_AFTER_MATCH.rst
new file mode 100644
index 0000000..d607992
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_test/TIMEOUT_AFTER_MATCH.rst
@@ -0,0 +1,39 @@
+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.6/Help/prop_test/WILL_FAIL.rst b/share/cmake-3.10/Help/prop_test/WILL_FAIL.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_test/WILL_FAIL.rst
rename to share/cmake-3.10/Help/prop_test/WILL_FAIL.rst
diff --git a/share/cmake-3.6/Help/prop_test/WORKING_DIRECTORY.rst b/share/cmake-3.10/Help/prop_test/WORKING_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_test/WORKING_DIRECTORY.rst
rename to share/cmake-3.10/Help/prop_test/WORKING_DIRECTORY.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/ALIASED_TARGET.rst b/share/cmake-3.10/Help/prop_tgt/ALIASED_TARGET.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/ALIASED_TARGET.rst
rename to share/cmake-3.10/Help/prop_tgt/ALIASED_TARGET.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/ANDROID_ANT_ADDITIONAL_OPTIONS.rst b/share/cmake-3.10/Help/prop_tgt/ANDROID_ANT_ADDITIONAL_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/ANDROID_ANT_ADDITIONAL_OPTIONS.rst
rename to share/cmake-3.10/Help/prop_tgt/ANDROID_ANT_ADDITIONAL_OPTIONS.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/ANDROID_API.rst b/share/cmake-3.10/Help/prop_tgt/ANDROID_API.rst
new file mode 100644
index 0000000..63464d7
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/ANDROID_API.rst
@@ -0,0 +1,8 @@
+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.6/Help/prop_tgt/ANDROID_API_MIN.rst b/share/cmake-3.10/Help/prop_tgt/ANDROID_API_MIN.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/ANDROID_API_MIN.rst
rename to share/cmake-3.10/Help/prop_tgt/ANDROID_API_MIN.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/ANDROID_ARCH.rst b/share/cmake-3.10/Help/prop_tgt/ANDROID_ARCH.rst
new file mode 100644
index 0000000..3e07e5a
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/ANDROID_ARCH.rst
@@ -0,0 +1,18 @@
+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.6/Help/prop_tgt/ANDROID_ASSETS_DIRECTORIES.rst b/share/cmake-3.10/Help/prop_tgt/ANDROID_ASSETS_DIRECTORIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/ANDROID_ASSETS_DIRECTORIES.rst
rename to share/cmake-3.10/Help/prop_tgt/ANDROID_ASSETS_DIRECTORIES.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/ANDROID_GUI.rst b/share/cmake-3.10/Help/prop_tgt/ANDROID_GUI.rst
new file mode 100644
index 0000000..92e2041
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/ANDROID_GUI.rst
@@ -0,0 +1,15 @@
+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.6/Help/prop_tgt/ANDROID_JAR_DEPENDENCIES.rst b/share/cmake-3.10/Help/prop_tgt/ANDROID_JAR_DEPENDENCIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/ANDROID_JAR_DEPENDENCIES.rst
rename to share/cmake-3.10/Help/prop_tgt/ANDROID_JAR_DEPENDENCIES.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/ANDROID_JAR_DIRECTORIES.rst b/share/cmake-3.10/Help/prop_tgt/ANDROID_JAR_DIRECTORIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/ANDROID_JAR_DIRECTORIES.rst
rename to share/cmake-3.10/Help/prop_tgt/ANDROID_JAR_DIRECTORIES.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/ANDROID_JAVA_SOURCE_DIR.rst b/share/cmake-3.10/Help/prop_tgt/ANDROID_JAVA_SOURCE_DIR.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/ANDROID_JAVA_SOURCE_DIR.rst
rename to share/cmake-3.10/Help/prop_tgt/ANDROID_JAVA_SOURCE_DIR.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/ANDROID_NATIVE_LIB_DEPENDENCIES.rst b/share/cmake-3.10/Help/prop_tgt/ANDROID_NATIVE_LIB_DEPENDENCIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/ANDROID_NATIVE_LIB_DEPENDENCIES.rst
rename to share/cmake-3.10/Help/prop_tgt/ANDROID_NATIVE_LIB_DEPENDENCIES.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/ANDROID_NATIVE_LIB_DIRECTORIES.rst b/share/cmake-3.10/Help/prop_tgt/ANDROID_NATIVE_LIB_DIRECTORIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/ANDROID_NATIVE_LIB_DIRECTORIES.rst
rename to share/cmake-3.10/Help/prop_tgt/ANDROID_NATIVE_LIB_DIRECTORIES.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/ANDROID_PROCESS_MAX.rst b/share/cmake-3.10/Help/prop_tgt/ANDROID_PROCESS_MAX.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/ANDROID_PROCESS_MAX.rst
rename to share/cmake-3.10/Help/prop_tgt/ANDROID_PROCESS_MAX.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/ANDROID_PROGUARD.rst b/share/cmake-3.10/Help/prop_tgt/ANDROID_PROGUARD.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/ANDROID_PROGUARD.rst
rename to share/cmake-3.10/Help/prop_tgt/ANDROID_PROGUARD.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/ANDROID_PROGUARD_CONFIG_PATH.rst b/share/cmake-3.10/Help/prop_tgt/ANDROID_PROGUARD_CONFIG_PATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/ANDROID_PROGUARD_CONFIG_PATH.rst
rename to share/cmake-3.10/Help/prop_tgt/ANDROID_PROGUARD_CONFIG_PATH.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/ANDROID_SECURE_PROPS_PATH.rst b/share/cmake-3.10/Help/prop_tgt/ANDROID_SECURE_PROPS_PATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/ANDROID_SECURE_PROPS_PATH.rst
rename to share/cmake-3.10/Help/prop_tgt/ANDROID_SECURE_PROPS_PATH.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/ANDROID_SKIP_ANT_STEP.rst b/share/cmake-3.10/Help/prop_tgt/ANDROID_SKIP_ANT_STEP.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/ANDROID_SKIP_ANT_STEP.rst
rename to share/cmake-3.10/Help/prop_tgt/ANDROID_SKIP_ANT_STEP.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/ANDROID_STL_TYPE.rst b/share/cmake-3.10/Help/prop_tgt/ANDROID_STL_TYPE.rst
new file mode 100644
index 0000000..386e96e
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/ANDROID_STL_TYPE.rst
@@ -0,0 +1,27 @@
+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.6/Help/prop_tgt/ARCHIVE_OUTPUT_DIRECTORY.rst b/share/cmake-3.10/Help/prop_tgt/ARCHIVE_OUTPUT_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/ARCHIVE_OUTPUT_DIRECTORY.rst
rename to share/cmake-3.10/Help/prop_tgt/ARCHIVE_OUTPUT_DIRECTORY.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/ARCHIVE_OUTPUT_DIRECTORY_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/ARCHIVE_OUTPUT_DIRECTORY_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/ARCHIVE_OUTPUT_DIRECTORY_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/ARCHIVE_OUTPUT_DIRECTORY_CONFIG.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/ARCHIVE_OUTPUT_NAME.rst b/share/cmake-3.10/Help/prop_tgt/ARCHIVE_OUTPUT_NAME.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/ARCHIVE_OUTPUT_NAME.rst
rename to share/cmake-3.10/Help/prop_tgt/ARCHIVE_OUTPUT_NAME.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/ARCHIVE_OUTPUT_NAME_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/ARCHIVE_OUTPUT_NAME_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/ARCHIVE_OUTPUT_NAME_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/ARCHIVE_OUTPUT_NAME_CONFIG.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/AUTOGEN_BUILD_DIR.rst b/share/cmake-3.10/Help/prop_tgt/AUTOGEN_BUILD_DIR.rst
new file mode 100644
index 0000000..8db6ede
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/AUTOGEN_BUILD_DIR.rst
@@ -0,0 +1,17 @@
+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_dir:`ADDITIONAL_MAKE_CLEAN_FILES`.
+
+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.10/Help/prop_tgt/AUTOGEN_TARGET_DEPENDS.rst b/share/cmake-3.10/Help/prop_tgt/AUTOGEN_TARGET_DEPENDS.rst
new file mode 100644
index 0000000..f522c6b
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/AUTOGEN_TARGET_DEPENDS.rst
@@ -0,0 +1,17 @@
+AUTOGEN_TARGET_DEPENDS
+----------------------
+
+Target dependencies of the corresponding ``_autogen`` target.
+
+Targets which have their :prop_tgt:`AUTOMOC` target ``ON`` have a
+corresponding ``_autogen`` target which is used to autogenerate generate moc
+files.  As this ``_autogen`` target is created at generate-time, it is not
+possible to define dependencies of it, such as to create inputs for the ``moc``
+executable.
+
+The ``AUTOGEN_TARGET_DEPENDS`` target property can be set instead to a list of
+dependencies for the ``_autogen`` target.  The buildsystem will be generated to
+depend on its contents.
+
+See the :manual:`cmake-qt(7)` manual for more information on using CMake
+with Qt.
diff --git a/share/cmake-3.10/Help/prop_tgt/AUTOMOC.rst b/share/cmake-3.10/Help/prop_tgt/AUTOMOC.rst
new file mode 100644
index 0000000..9e5261f
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/AUTOMOC.rst
@@ -0,0 +1,86 @@
+AUTOMOC
+-------
+
+Should the target be processed with automoc (for Qt projects).
+
+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.
+
+When this property is set ``ON``, CMake will scan the header and
+source files at build time and invoke moc accordingly.
+
+* If an ``#include`` statement like ``#include "moc_<basename>.cpp"`` is found,
+  a macro from :prop_tgt:`AUTOMOC_MACRO_NAMES` is expected to appear in the
+  ``<basename>.h(xx)`` header file. ``moc`` is run on the header
+  file to generate ``moc_<basename>.cpp`` in the
+  ``<AUTOGEN_BUILD_DIR>/include`` directory which is automatically added
+  to the target's :prop_tgt:`INCLUDE_DIRECTORIES`.
+  This allows the compiler to find the included ``moc_<basename>.cpp`` file
+  regardless of the location the original source.
+
+  * 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`.
+
+* If an ``#include`` statement like ``#include "<basename>.moc"`` is found,
+  a macro from :prop_tgt:`AUTOMOC_MACRO_NAMES` is expected to appear in the
+  source file and ``moc`` is run on the source file itself.
+
+* Header files that are not included by an ``#include "moc_<basename>.cpp"``
+  statement are nonetheless scanned for a macro out of
+  :prop_tgt:`AUTOMOC_MACRO_NAMES`.
+  The resulting ``moc_<basename>.cpp`` files are generated in custom
+  directories and automatically included in a generated
+  ``<AUTOGEN_BUILD_DIR>/mocs_compilation.cpp`` file,
+  which is compiled as part of the target.
+
+  * The custom directories with checksum
+    based names help to avoid name collisions for ``moc`` files with the same
+    ``<basename>``.
+
+  * See :prop_tgt:`AUTOGEN_BUILD_DIR`.
+
+* Additionally, header files with the same base name as a source file,
+  (like ``<basename>.h``) or ``_p`` appended to the base name (like
+  ``<basename>_p.h``), are scanned for a macro out of
+  :prop_tgt:`AUTOMOC_MACRO_NAMES`, and if found, ``moc``
+  is also executed on those files.
+
+* ``AUTOMOC`` always checks multiple header alternative extensions,
+  such as ``hpp``, ``hxx``, etc. when searching for headers.
+
+* ``AUTOMOC`` looks for the ``Q_PLUGIN_METADATA`` macro and reruns the
+  ``moc`` when the file addressed by the ``FILE`` argument of the macro changes.
+
+This property is initialized by the value of the :variable:`CMAKE_AUTOMOC`
+variable if it is set when a target is created.
+
+Additional command line options for ``moc`` can be set via the
+:prop_tgt:`AUTOMOC_MOC_OPTIONS` property.
+
+By enabling the :variable:`CMAKE_AUTOMOC_RELAXED_MODE` variable the
+rules for searching the files which will be processed by ``moc`` can be relaxed.
+See the documentation for this variable for more details.
+
+The global property :prop_gbl:`AUTOGEN_TARGETS_FOLDER` can be used to group the
+automoc targets together in an IDE, e.g.  in MSVS.
+
+The global property :prop_gbl:`AUTOGEN_SOURCE_GROUP` can be used to group
+files generated by :prop_tgt:`AUTOMOC` together in an IDE, e.g.  in MSVS.
+
+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`.
+
+Compiler pre definitions for ``moc`` are written to a ``moc_predefs.h`` file
+which is controlled by :prop_tgt:`AUTOMOC_COMPILER_PREDEFINES`.
+
+Source C++ files can be excluded from :prop_tgt:`AUTOMOC` processing by
+enabling :prop_sf:`SKIP_AUTOMOC` or the broader :prop_sf:`SKIP_AUTOGEN`.
+
+See the :manual:`cmake-qt(7)` manual for more information on using CMake
+with Qt.
diff --git a/share/cmake-3.10/Help/prop_tgt/AUTOMOC_COMPILER_PREDEFINES.rst b/share/cmake-3.10/Help/prop_tgt/AUTOMOC_COMPILER_PREDEFINES.rst
new file mode 100644
index 0000000..57a647f
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/AUTOMOC_COMPILER_PREDEFINES.rst
@@ -0,0 +1,24 @@
+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.10/Help/prop_tgt/AUTOMOC_DEPEND_FILTERS.rst b/share/cmake-3.10/Help/prop_tgt/AUTOMOC_DEPEND_FILTERS.rst
new file mode 100644
index 0000000..b738ecf
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/AUTOMOC_DEPEND_FILTERS.rst
@@ -0,0 +1,45 @@
+AUTOMOC_DEPEND_FILTERS
+----------------------
+
+Filter definitions used by :prop_tgt:`AUTOMOC` to extract file names from
+source code as additional dependencies for the ``moc`` file.
+
+This property is only used if the :prop_tgt:`AUTOMOC` property is ``ON``
+for this target.
+
+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.
+
+Consider a filter extracts the file name ``DEP`` from the content of a file
+``FOO``. If ``DEP`` changes, then the ``moc`` file for ``FOO`` gets rebuilt.
+The file ``DEP`` is searched for first in the vicinity
+of ``FOO`` and afterwards in the target's :prop_tgt:`INCLUDE_DIRECTORIES`.
+
+By default :prop_tgt:`AUTOMOC_DEPEND_FILTERS` is initialized from
+:variable:`CMAKE_AUTOMOC_DEPEND_FILTERS`, which is empty by default.
+
+See the :manual:`cmake-qt(7)` manual for more information on using CMake
+with Qt.
+
+
+Example
+^^^^^^^
+
+Consider a file ``FOO.hpp`` holds a custom macro ``OBJ_JSON_FILE`` and we
+want the ``moc`` file to depend on the macro`s file name argument::
+
+  class My_Class : public QObject
+  {
+    Q_OBJECT
+    OBJ_JSON_FILE ( "DEP.json" )
+  ...
+  };
+
+Then we might use :variable:`CMAKE_AUTOMOC_DEPEND_FILTERS` to
+define a filter like this::
+
+  set(CMAKE_AUTOMOC_DEPEND_FILTERS
+    "OBJ_JSON_FILE" "[\n][ \t]*OBJ_JSON_FILE[ \t]*\\([ \t]*\"([^\"]+)\""
+  )
diff --git a/share/cmake-3.10/Help/prop_tgt/AUTOMOC_MACRO_NAMES.rst b/share/cmake-3.10/Help/prop_tgt/AUTOMOC_MACRO_NAMES.rst
new file mode 100644
index 0000000..a5ad9d5
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/AUTOMOC_MACRO_NAMES.rst
@@ -0,0 +1,32 @@
+AUTOMOC_MACRO_NAMES
+-------------------
+
+A :ref:`;-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 the ``Q_OBJECT`` macro is hidden inside an other 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.6/Help/prop_tgt/AUTOMOC_MOC_OPTIONS.rst b/share/cmake-3.10/Help/prop_tgt/AUTOMOC_MOC_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/AUTOMOC_MOC_OPTIONS.rst
rename to share/cmake-3.10/Help/prop_tgt/AUTOMOC_MOC_OPTIONS.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/AUTORCC.rst b/share/cmake-3.10/Help/prop_tgt/AUTORCC.rst
new file mode 100644
index 0000000..c0f6a26
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/AUTORCC.rst
@@ -0,0 +1,34 @@
+AUTORCC
+-------
+
+Should the target be processed with autorcc (for Qt projects).
+
+``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.
+
+Additional command line options for rcc can be set via the
+:prop_sf:`AUTORCC_OPTIONS` source file property on the ``.qrc`` file.
+
+The global property :prop_gbl:`AUTOGEN_TARGETS_FOLDER` can be used to group
+the autorcc targets together in an IDE, e.g. in MSVS.
+
+The global property :prop_gbl:`AUTOGEN_SOURCE_GROUP` can be used to group
+files generated by :prop_tgt:`AUTORCC` together in an IDE, e.g.  in MSVS.
+
+When there are multiple ``.qrc`` files with the same name, CMake will
+generate unspecified unique names for ``rcc``.  Therefore if
+``Q_INIT_RESOURCE()`` or ``Q_CLEANUP_RESOURCE()`` need to be used the
+``.qrc`` file name must be unique.
+
+Source files can be excluded from :prop_tgt:`AUTORCC` processing by
+enabling :prop_sf:`SKIP_AUTORCC` or the broader :prop_sf:`SKIP_AUTOGEN`.
+
+See the :manual:`cmake-qt(7)` manual for more information on using CMake
+with Qt.
diff --git a/share/cmake-3.10/Help/prop_tgt/AUTORCC_OPTIONS.rst b/share/cmake-3.10/Help/prop_tgt/AUTORCC_OPTIONS.rst
new file mode 100644
index 0000000..d6ade5a
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/AUTORCC_OPTIONS.rst
@@ -0,0 +1,30 @@
+AUTORCC_OPTIONS
+---------------
+
+Additional options for ``rcc`` when using :prop_tgt:`AUTORCC`
+
+This property holds additional command line options which will be used
+when ``rcc`` is executed during the build via :prop_tgt:`AUTORCC`,
+i.e. it is equivalent to the optional ``OPTIONS`` argument of the
+:module:`qt4_add_resources() <FindQt4>` macro.
+
+By default it is empty.
+
+This property is initialized by the value of the
+:variable:`CMAKE_AUTORCC_OPTIONS` variable if it is set when a target is
+created.
+
+The options set on the target may be overridden by :prop_sf:`AUTORCC_OPTIONS`
+set on the ``.qrc`` source file.
+
+See the :manual:`cmake-qt(7)` manual for more information on using CMake
+with Qt.
+
+EXAMPLE
+^^^^^^^
+
+.. code-block:: cmake
+
+  # ...
+  set_property(TARGET tgt PROPERTY AUTORCC_OPTIONS "--compress;9")
+  # ...
diff --git a/share/cmake-3.10/Help/prop_tgt/AUTOUIC.rst b/share/cmake-3.10/Help/prop_tgt/AUTOUIC.rst
new file mode 100644
index 0000000..1791384
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/AUTOUIC.rst
@@ -0,0 +1,37 @@
+AUTOUIC
+-------
+
+Should the target be processed with autouic (for Qt projects).
+
+``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.
+
+When this property is ``ON``, CMake will scan the source files at build time
+and invoke ``uic`` accordingly.  If an ``#include`` statement like
+``#include "ui_foo.h"`` is found in ``source.cpp``, a ``foo.ui`` file is
+searched for first in the vicinity of ``source.cpp`` and afterwards in the
+optional :prop_tgt:`AUTOUIC_SEARCH_PATHS` of the target.
+``uic`` is run on the ``foo.ui`` file to generate ``ui_foo.h`` in the directory
+``<AUTOGEN_BUILD_DIR>/include``,
+which is automatically added to the target's :prop_tgt:`INCLUDE_DIRECTORIES`.
+
+* 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`.
+
+This property is initialized by the value of the :variable:`CMAKE_AUTOUIC`
+variable if it is set when a target is created.
+
+Additional command line options for ``uic`` can be set via the
+:prop_sf:`AUTOUIC_OPTIONS` source file property on the ``foo.ui`` file.
+The global property :prop_gbl:`AUTOGEN_TARGETS_FOLDER` can be used to group the
+autouic targets together in an IDE, e.g. in MSVS.
+
+Source files can be excluded from :prop_tgt:`AUTOUIC` processing by
+enabling :prop_sf:`SKIP_AUTOUIC` or the broader :prop_sf:`SKIP_AUTOGEN`.
+
+See the :manual:`cmake-qt(7)` manual for more information on using CMake
+with Qt.
diff --git a/share/cmake-3.10/Help/prop_tgt/AUTOUIC_OPTIONS.rst b/share/cmake-3.10/Help/prop_tgt/AUTOUIC_OPTIONS.rst
new file mode 100644
index 0000000..3f613b9
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/AUTOUIC_OPTIONS.rst
@@ -0,0 +1,34 @@
+AUTOUIC_OPTIONS
+---------------
+
+Additional options for ``uic`` when using :prop_tgt:`AUTOUIC`
+
+This property holds additional command line options which will be used when
+``uic`` is executed during the build via :prop_tgt:`AUTOUIC`, i.e. it is
+equivalent to the optional ``OPTIONS`` argument of the
+:module:`qt4_wrap_ui() <FindQt4>` macro.
+
+By default it is empty.
+
+This property is initialized by the value of the
+:variable:`CMAKE_AUTOUIC_OPTIONS` variable if it is set when a target is
+created.
+
+The options set on the target may be overridden by :prop_sf:`AUTOUIC_OPTIONS`
+set on the ``.ui`` source file.
+
+This property may use "generator expressions" with the syntax ``$<...>``.
+See the :manual:`cmake-generator-expressions(7)` manual for available
+expressions.
+
+See the :manual:`cmake-qt(7)` manual for more information on using CMake
+with Qt.
+
+EXAMPLE
+^^^^^^^
+
+.. code-block:: cmake
+
+  # ...
+  set_property(TARGET tgt PROPERTY AUTOUIC_OPTIONS "--no-protection")
+  # ...
diff --git a/share/cmake-3.10/Help/prop_tgt/AUTOUIC_SEARCH_PATHS.rst b/share/cmake-3.10/Help/prop_tgt/AUTOUIC_SEARCH_PATHS.rst
new file mode 100644
index 0000000..96d9f89
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/AUTOUIC_SEARCH_PATHS.rst
@@ -0,0 +1,12 @@
+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.6/Help/prop_tgt/BINARY_DIR.rst b/share/cmake-3.10/Help/prop_tgt/BINARY_DIR.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/BINARY_DIR.rst
rename to share/cmake-3.10/Help/prop_tgt/BINARY_DIR.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/BUILD_RPATH.rst b/share/cmake-3.10/Help/prop_tgt/BUILD_RPATH.rst
new file mode 100644
index 0000000..27393f5
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/BUILD_RPATH.rst
@@ -0,0 +1,10 @@
+BUILD_RPATH
+-----------
+
+A :ref:`;-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.
diff --git a/share/cmake-3.10/Help/prop_tgt/BUILD_WITH_INSTALL_NAME_DIR.rst b/share/cmake-3.10/Help/prop_tgt/BUILD_WITH_INSTALL_NAME_DIR.rst
new file mode 100644
index 0000000..bbb9a24
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/BUILD_WITH_INSTALL_NAME_DIR.rst
@@ -0,0 +1,13 @@
+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.10/Help/prop_tgt/BUILD_WITH_INSTALL_RPATH.rst b/share/cmake-3.10/Help/prop_tgt/BUILD_WITH_INSTALL_RPATH.rst
new file mode 100644
index 0000000..0244351
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/BUILD_WITH_INSTALL_RPATH.rst
@@ -0,0 +1,15 @@
+BUILD_WITH_INSTALL_RPATH
+------------------------
+
+``BUILD_WITH_INSTALL_RPATH`` is a boolean specifying whether to link the target
+in the build tree with the :prop_tgt:`INSTALL_RPATH`.  This takes precedence
+over :prop_tgt:`SKIP_BUILD_RPATH` and avoids the need for relinking before
+installation.
+
+This property is initialized by the value of the
+:variable:`CMAKE_BUILD_WITH_INSTALL_RPATH` variable if it is set when a target
+is created.
+
+If policy :policy:`CMP0068` is not ``NEW``, this property also controls use of
+:prop_tgt:`INSTALL_NAME_DIR` in the build tree on macOS.  Either way, the
+:prop_tgt:`BUILD_WITH_INSTALL_NAME_DIR` target property takes precedence.
diff --git a/share/cmake-3.6/Help/prop_tgt/BUNDLE.rst b/share/cmake-3.10/Help/prop_tgt/BUNDLE.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/BUNDLE.rst
rename to share/cmake-3.10/Help/prop_tgt/BUNDLE.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/BUNDLE_EXTENSION.rst b/share/cmake-3.10/Help/prop_tgt/BUNDLE_EXTENSION.rst
new file mode 100644
index 0000000..6b3d580
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/BUNDLE_EXTENSION.rst
@@ -0,0 +1,8 @@
+BUNDLE_EXTENSION
+----------------
+
+The file extension used to name a :prop_tgt:`BUNDLE`, a :prop_tgt:`FRAMEWORK`,
+or a :prop_tgt:`MACOSX_BUNDLE` target on the OS X and iOS.
+
+The default value is ``bundle``, ``framework``, or ``app`` for the respective
+target types.
diff --git a/share/cmake-3.6/Help/prop_tgt/COMPATIBLE_INTERFACE_BOOL.rst b/share/cmake-3.10/Help/prop_tgt/COMPATIBLE_INTERFACE_BOOL.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/COMPATIBLE_INTERFACE_BOOL.rst
rename to share/cmake-3.10/Help/prop_tgt/COMPATIBLE_INTERFACE_BOOL.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/COMPATIBLE_INTERFACE_NUMBER_MAX.rst b/share/cmake-3.10/Help/prop_tgt/COMPATIBLE_INTERFACE_NUMBER_MAX.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/COMPATIBLE_INTERFACE_NUMBER_MAX.rst
rename to share/cmake-3.10/Help/prop_tgt/COMPATIBLE_INTERFACE_NUMBER_MAX.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/COMPATIBLE_INTERFACE_NUMBER_MIN.rst b/share/cmake-3.10/Help/prop_tgt/COMPATIBLE_INTERFACE_NUMBER_MIN.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/COMPATIBLE_INTERFACE_NUMBER_MIN.rst
rename to share/cmake-3.10/Help/prop_tgt/COMPATIBLE_INTERFACE_NUMBER_MIN.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/COMPATIBLE_INTERFACE_STRING.rst b/share/cmake-3.10/Help/prop_tgt/COMPATIBLE_INTERFACE_STRING.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/COMPATIBLE_INTERFACE_STRING.rst
rename to share/cmake-3.10/Help/prop_tgt/COMPATIBLE_INTERFACE_STRING.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/COMPILE_DEFINITIONS.rst b/share/cmake-3.10/Help/prop_tgt/COMPILE_DEFINITIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/COMPILE_DEFINITIONS.rst
rename to share/cmake-3.10/Help/prop_tgt/COMPILE_DEFINITIONS.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/COMPILE_DEFINITIONS_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/COMPILE_DEFINITIONS_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/COMPILE_DEFINITIONS_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/COMPILE_DEFINITIONS_CONFIG.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/COMPILE_FEATURES.rst b/share/cmake-3.10/Help/prop_tgt/COMPILE_FEATURES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/COMPILE_FEATURES.rst
rename to share/cmake-3.10/Help/prop_tgt/COMPILE_FEATURES.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/COMPILE_FLAGS.rst b/share/cmake-3.10/Help/prop_tgt/COMPILE_FLAGS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/COMPILE_FLAGS.rst
rename to share/cmake-3.10/Help/prop_tgt/COMPILE_FLAGS.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/COMPILE_OPTIONS.rst b/share/cmake-3.10/Help/prop_tgt/COMPILE_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/COMPILE_OPTIONS.rst
rename to share/cmake-3.10/Help/prop_tgt/COMPILE_OPTIONS.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/COMPILE_PDB_NAME.rst b/share/cmake-3.10/Help/prop_tgt/COMPILE_PDB_NAME.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/COMPILE_PDB_NAME.rst
rename to share/cmake-3.10/Help/prop_tgt/COMPILE_PDB_NAME.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/COMPILE_PDB_NAME_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/COMPILE_PDB_NAME_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/COMPILE_PDB_NAME_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/COMPILE_PDB_NAME_CONFIG.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/COMPILE_PDB_NOTE.txt b/share/cmake-3.10/Help/prop_tgt/COMPILE_PDB_NOTE.txt
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/COMPILE_PDB_NOTE.txt
rename to share/cmake-3.10/Help/prop_tgt/COMPILE_PDB_NOTE.txt
diff --git a/share/cmake-3.6/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY.rst b/share/cmake-3.10/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY.rst
rename to share/cmake-3.10/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/CONFIG_OUTPUT_NAME.rst b/share/cmake-3.10/Help/prop_tgt/CONFIG_OUTPUT_NAME.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/CONFIG_OUTPUT_NAME.rst
rename to share/cmake-3.10/Help/prop_tgt/CONFIG_OUTPUT_NAME.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/CONFIG_POSTFIX.rst b/share/cmake-3.10/Help/prop_tgt/CONFIG_POSTFIX.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/CONFIG_POSTFIX.rst
rename to share/cmake-3.10/Help/prop_tgt/CONFIG_POSTFIX.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/CROSSCOMPILING_EMULATOR.rst b/share/cmake-3.10/Help/prop_tgt/CROSSCOMPILING_EMULATOR.rst
new file mode 100644
index 0000000..a0811bc
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/CROSSCOMPILING_EMULATOR.rst
@@ -0,0 +1,11 @@
+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.
+
+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.10/Help/prop_tgt/CUDA_EXTENSIONS.rst b/share/cmake-3.10/Help/prop_tgt/CUDA_EXTENSIONS.rst
new file mode 100644
index 0000000..098ca3c
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/CUDA_EXTENSIONS.rst
@@ -0,0 +1,17 @@
+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.10/Help/prop_tgt/CUDA_PTX_COMPILATION.rst b/share/cmake-3.10/Help/prop_tgt/CUDA_PTX_COMPILATION.rst
new file mode 100644
index 0000000..0ee372b
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/CUDA_PTX_COMPILATION.rst
@@ -0,0 +1,12 @@
+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.10/Help/prop_tgt/CUDA_RESOLVE_DEVICE_SYMBOLS.rst b/share/cmake-3.10/Help/prop_tgt/CUDA_RESOLVE_DEVICE_SYMBOLS.rst
new file mode 100644
index 0000000..127d79f
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/CUDA_RESOLVE_DEVICE_SYMBOLS.rst
@@ -0,0 +1,15 @@
+CUDA_RESOLVE_DEVICE_SYMBOLS
+---------------------------
+
+CUDA only: Enables device linking for the specific static library target
+
+If set this will enable device linking on this static library target. 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.
+
+For instance:
+
+.. code-block:: cmake
+
+  set_property(TARGET mystaticlib PROPERTY CUDA_RESOLVE_DEVICE_SYMBOLS ON)
diff --git a/share/cmake-3.10/Help/prop_tgt/CUDA_SEPARABLE_COMPILATION.rst b/share/cmake-3.10/Help/prop_tgt/CUDA_SEPARABLE_COMPILATION.rst
new file mode 100644
index 0000000..1c7dd80
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/CUDA_SEPARABLE_COMPILATION.rst
@@ -0,0 +1,13 @@
+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)
diff --git a/share/cmake-3.10/Help/prop_tgt/CUDA_STANDARD.rst b/share/cmake-3.10/Help/prop_tgt/CUDA_STANDARD.rst
new file mode 100644
index 0000000..a3a2f56
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/CUDA_STANDARD.rst
@@ -0,0 +1,32 @@
+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``, ``11``, ``14``.
+
+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.10/Help/prop_tgt/CUDA_STANDARD_REQUIRED.rst b/share/cmake-3.10/Help/prop_tgt/CUDA_STANDARD_REQUIRED.rst
new file mode 100644
index 0000000..b2d5b28
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/CUDA_STANDARD_REQUIRED.rst
@@ -0,0 +1,18 @@
+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.10/Help/prop_tgt/CXX_EXTENSIONS.rst b/share/cmake-3.10/Help/prop_tgt/CXX_EXTENSIONS.rst
new file mode 100644
index 0000000..280bb3a
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/CXX_EXTENSIONS.rst
@@ -0,0 +1,17 @@
+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.10/Help/prop_tgt/CXX_STANDARD.rst b/share/cmake-3.10/Help/prop_tgt/CXX_STANDARD.rst
new file mode 100644
index 0000000..0762033
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/CXX_STANDARD.rst
@@ -0,0 +1,34 @@
+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``, and ``17``.
+
+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.6/Help/prop_tgt/CXX_STANDARD_REQUIRED.rst b/share/cmake-3.10/Help/prop_tgt/CXX_STANDARD_REQUIRED.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/CXX_STANDARD_REQUIRED.rst
rename to share/cmake-3.10/Help/prop_tgt/CXX_STANDARD_REQUIRED.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/C_EXTENSIONS.rst b/share/cmake-3.10/Help/prop_tgt/C_EXTENSIONS.rst
new file mode 100644
index 0000000..05b14ce
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/C_EXTENSIONS.rst
@@ -0,0 +1,17 @@
+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.10/Help/prop_tgt/C_STANDARD.rst b/share/cmake-3.10/Help/prop_tgt/C_STANDARD.rst
new file mode 100644
index 0000000..e7f7904
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/C_STANDARD.rst
@@ -0,0 +1,34 @@
+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 standard level, such as Microsoft Visual C++ before
+2015 Update 3, 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.6/Help/prop_tgt/C_STANDARD_REQUIRED.rst b/share/cmake-3.10/Help/prop_tgt/C_STANDARD_REQUIRED.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/C_STANDARD_REQUIRED.rst
rename to share/cmake-3.10/Help/prop_tgt/C_STANDARD_REQUIRED.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/DEBUG_POSTFIX.rst b/share/cmake-3.10/Help/prop_tgt/DEBUG_POSTFIX.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/DEBUG_POSTFIX.rst
rename to share/cmake-3.10/Help/prop_tgt/DEBUG_POSTFIX.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/DEFINE_SYMBOL.rst b/share/cmake-3.10/Help/prop_tgt/DEFINE_SYMBOL.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/DEFINE_SYMBOL.rst
rename to share/cmake-3.10/Help/prop_tgt/DEFINE_SYMBOL.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/DEPLOYMENT_REMOTE_DIRECTORY.rst b/share/cmake-3.10/Help/prop_tgt/DEPLOYMENT_REMOTE_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/DEPLOYMENT_REMOTE_DIRECTORY.rst
rename to share/cmake-3.10/Help/prop_tgt/DEPLOYMENT_REMOTE_DIRECTORY.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/ENABLE_EXPORTS.rst b/share/cmake-3.10/Help/prop_tgt/ENABLE_EXPORTS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/ENABLE_EXPORTS.rst
rename to share/cmake-3.10/Help/prop_tgt/ENABLE_EXPORTS.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/EXCLUDE_FROM_ALL.rst b/share/cmake-3.10/Help/prop_tgt/EXCLUDE_FROM_ALL.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/EXCLUDE_FROM_ALL.rst
rename to share/cmake-3.10/Help/prop_tgt/EXCLUDE_FROM_ALL.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/EXCLUDE_FROM_DEFAULT_BUILD.rst b/share/cmake-3.10/Help/prop_tgt/EXCLUDE_FROM_DEFAULT_BUILD.rst
new file mode 100644
index 0000000..a14e48c
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/EXCLUDE_FROM_DEFAULT_BUILD.rst
@@ -0,0 +1,8 @@
+EXCLUDE_FROM_DEFAULT_BUILD
+--------------------------
+
+Exclude target from "Build Solution".
+
+This property is only used by Visual Studio generators.
+When set to TRUE, the target will not be built when you press "Build
+Solution".
diff --git a/share/cmake-3.6/Help/prop_tgt/EXCLUDE_FROM_DEFAULT_BUILD_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/EXCLUDE_FROM_DEFAULT_BUILD_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/EXCLUDE_FROM_DEFAULT_BUILD_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/EXCLUDE_FROM_DEFAULT_BUILD_CONFIG.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/EXPORT_NAME.rst b/share/cmake-3.10/Help/prop_tgt/EXPORT_NAME.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/EXPORT_NAME.rst
rename to share/cmake-3.10/Help/prop_tgt/EXPORT_NAME.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/EchoString.rst b/share/cmake-3.10/Help/prop_tgt/EchoString.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/EchoString.rst
rename to share/cmake-3.10/Help/prop_tgt/EchoString.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/FOLDER.rst b/share/cmake-3.10/Help/prop_tgt/FOLDER.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/FOLDER.rst
rename to share/cmake-3.10/Help/prop_tgt/FOLDER.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/FRAMEWORK.rst b/share/cmake-3.10/Help/prop_tgt/FRAMEWORK.rst
new file mode 100644
index 0000000..495d30e
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/FRAMEWORK.rst
@@ -0,0 +1,35 @@
+FRAMEWORK
+---------
+
+Build ``SHARED`` or ``STATIC`` library as Framework Bundle on the OS X and iOS.
+
+If such a library target has this property set to ``TRUE`` it will be
+built as a framework when built on the OS X and iOS.  It will have the
+directory structure required for a framework and will be suitable to
+be used with the ``-framework`` option
+
+To customize ``Info.plist`` file in the framework, use
+:prop_tgt:`MACOSX_FRAMEWORK_INFO_PLIST` target property.
+
+For OS X see also the :prop_tgt:`FRAMEWORK_VERSION` target property.
+
+Example of creation ``dynamicFramework``:
+
+.. code-block:: cmake
+
+  add_library(dynamicFramework SHARED
+              dynamicFramework.c
+              dynamicFramework.h
+  )
+  set_target_properties(dynamicFramework PROPERTIES
+    FRAMEWORK TRUE
+    FRAMEWORK_VERSION C
+    MACOSX_FRAMEWORK_IDENTIFIER com.cmake.dynamicFramework
+    MACOSX_FRAMEWORK_INFO_PLIST Info.plist
+    # "current version" in semantic format in Mach-O binary file
+    VERSION 16.4.0
+    # "compatibility version" in semantic format in Mach-O binary file
+    SOVERSION 1.0.0
+    PUBLIC_HEADER dynamicFramework.h
+    XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer"
+  )
diff --git a/share/cmake-3.6/Help/prop_tgt/FRAMEWORK_VERSION.rst b/share/cmake-3.10/Help/prop_tgt/FRAMEWORK_VERSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/FRAMEWORK_VERSION.rst
rename to share/cmake-3.10/Help/prop_tgt/FRAMEWORK_VERSION.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/Fortran_FORMAT.rst b/share/cmake-3.10/Help/prop_tgt/Fortran_FORMAT.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/Fortran_FORMAT.rst
rename to share/cmake-3.10/Help/prop_tgt/Fortran_FORMAT.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/Fortran_MODULE_DIRECTORY.rst b/share/cmake-3.10/Help/prop_tgt/Fortran_MODULE_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/Fortran_MODULE_DIRECTORY.rst
rename to share/cmake-3.10/Help/prop_tgt/Fortran_MODULE_DIRECTORY.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/GENERATOR_FILE_NAME.rst b/share/cmake-3.10/Help/prop_tgt/GENERATOR_FILE_NAME.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/GENERATOR_FILE_NAME.rst
rename to share/cmake-3.10/Help/prop_tgt/GENERATOR_FILE_NAME.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/GNUtoMS.rst b/share/cmake-3.10/Help/prop_tgt/GNUtoMS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/GNUtoMS.rst
rename to share/cmake-3.10/Help/prop_tgt/GNUtoMS.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/HAS_CXX.rst b/share/cmake-3.10/Help/prop_tgt/HAS_CXX.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/HAS_CXX.rst
rename to share/cmake-3.10/Help/prop_tgt/HAS_CXX.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/IMPLICIT_DEPENDS_INCLUDE_TRANSFORM.rst b/share/cmake-3.10/Help/prop_tgt/IMPLICIT_DEPENDS_INCLUDE_TRANSFORM.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/IMPLICIT_DEPENDS_INCLUDE_TRANSFORM.rst
rename to share/cmake-3.10/Help/prop_tgt/IMPLICIT_DEPENDS_INCLUDE_TRANSFORM.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/IMPORTED.rst b/share/cmake-3.10/Help/prop_tgt/IMPORTED.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/IMPORTED.rst
rename to share/cmake-3.10/Help/prop_tgt/IMPORTED.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/IMPORTED_CONFIGURATIONS.rst b/share/cmake-3.10/Help/prop_tgt/IMPORTED_CONFIGURATIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/IMPORTED_CONFIGURATIONS.rst
rename to share/cmake-3.10/Help/prop_tgt/IMPORTED_CONFIGURATIONS.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/IMPORTED_IMPLIB.rst b/share/cmake-3.10/Help/prop_tgt/IMPORTED_IMPLIB.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/IMPORTED_IMPLIB.rst
rename to share/cmake-3.10/Help/prop_tgt/IMPORTED_IMPLIB.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/IMPORTED_IMPLIB_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/IMPORTED_IMPLIB_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/IMPORTED_IMPLIB_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/IMPORTED_IMPLIB_CONFIG.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/IMPORTED_LIBNAME.rst b/share/cmake-3.10/Help/prop_tgt/IMPORTED_LIBNAME.rst
new file mode 100644
index 0000000..1943dba
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/IMPORTED_LIBNAME.rst
@@ -0,0 +1,23 @@
+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.10/Help/prop_tgt/IMPORTED_LIBNAME_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/IMPORTED_LIBNAME_CONFIG.rst
new file mode 100644
index 0000000..a28b838
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/IMPORTED_LIBNAME_CONFIG.rst
@@ -0,0 +1,7 @@
+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.6/Help/prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES.rst b/share/cmake-3.10/Help/prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES.rst
rename to share/cmake-3.10/Help/prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES_CONFIG.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LANGUAGES.rst b/share/cmake-3.10/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LANGUAGES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LANGUAGES.rst
rename to share/cmake-3.10/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LANGUAGES.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LANGUAGES_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LANGUAGES_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LANGUAGES_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LANGUAGES_CONFIG.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LIBRARIES.rst b/share/cmake-3.10/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LIBRARIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LIBRARIES.rst
rename to share/cmake-3.10/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LIBRARIES.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LIBRARIES_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LIBRARIES_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LIBRARIES_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/IMPORTED_LINK_INTERFACE_LIBRARIES_CONFIG.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/IMPORTED_LINK_INTERFACE_MULTIPLICITY.rst b/share/cmake-3.10/Help/prop_tgt/IMPORTED_LINK_INTERFACE_MULTIPLICITY.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/IMPORTED_LINK_INTERFACE_MULTIPLICITY.rst
rename to share/cmake-3.10/Help/prop_tgt/IMPORTED_LINK_INTERFACE_MULTIPLICITY.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/IMPORTED_LINK_INTERFACE_MULTIPLICITY_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/IMPORTED_LINK_INTERFACE_MULTIPLICITY_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/IMPORTED_LINK_INTERFACE_MULTIPLICITY_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/IMPORTED_LINK_INTERFACE_MULTIPLICITY_CONFIG.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/IMPORTED_LOCATION.rst b/share/cmake-3.10/Help/prop_tgt/IMPORTED_LOCATION.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/IMPORTED_LOCATION.rst
rename to share/cmake-3.10/Help/prop_tgt/IMPORTED_LOCATION.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/IMPORTED_LOCATION_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/IMPORTED_LOCATION_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/IMPORTED_LOCATION_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/IMPORTED_LOCATION_CONFIG.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/IMPORTED_NO_SONAME.rst b/share/cmake-3.10/Help/prop_tgt/IMPORTED_NO_SONAME.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/IMPORTED_NO_SONAME.rst
rename to share/cmake-3.10/Help/prop_tgt/IMPORTED_NO_SONAME.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/IMPORTED_NO_SONAME_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/IMPORTED_NO_SONAME_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/IMPORTED_NO_SONAME_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/IMPORTED_NO_SONAME_CONFIG.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/IMPORTED_OBJECTS.rst b/share/cmake-3.10/Help/prop_tgt/IMPORTED_OBJECTS.rst
new file mode 100644
index 0000000..222e6cc
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/IMPORTED_OBJECTS.rst
@@ -0,0 +1,11 @@
+IMPORTED_OBJECTS
+----------------
+
+:ref:`;-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.10/Help/prop_tgt/IMPORTED_OBJECTS_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/IMPORTED_OBJECTS_CONFIG.rst
new file mode 100644
index 0000000..4419ed1
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/IMPORTED_OBJECTS_CONFIG.rst
@@ -0,0 +1,7 @@
+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.6/Help/prop_tgt/IMPORTED_SONAME.rst b/share/cmake-3.10/Help/prop_tgt/IMPORTED_SONAME.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/IMPORTED_SONAME.rst
rename to share/cmake-3.10/Help/prop_tgt/IMPORTED_SONAME.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/IMPORTED_SONAME_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/IMPORTED_SONAME_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/IMPORTED_SONAME_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/IMPORTED_SONAME_CONFIG.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/IMPORT_PREFIX.rst b/share/cmake-3.10/Help/prop_tgt/IMPORT_PREFIX.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/IMPORT_PREFIX.rst
rename to share/cmake-3.10/Help/prop_tgt/IMPORT_PREFIX.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/IMPORT_SUFFIX.rst b/share/cmake-3.10/Help/prop_tgt/IMPORT_SUFFIX.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/IMPORT_SUFFIX.rst
rename to share/cmake-3.10/Help/prop_tgt/IMPORT_SUFFIX.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/INCLUDE_DIRECTORIES.rst b/share/cmake-3.10/Help/prop_tgt/INCLUDE_DIRECTORIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/INCLUDE_DIRECTORIES.rst
rename to share/cmake-3.10/Help/prop_tgt/INCLUDE_DIRECTORIES.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/INSTALL_NAME_DIR.rst b/share/cmake-3.10/Help/prop_tgt/INSTALL_NAME_DIR.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/INSTALL_NAME_DIR.rst
rename to share/cmake-3.10/Help/prop_tgt/INSTALL_NAME_DIR.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/INSTALL_RPATH.rst b/share/cmake-3.10/Help/prop_tgt/INSTALL_RPATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/INSTALL_RPATH.rst
rename to share/cmake-3.10/Help/prop_tgt/INSTALL_RPATH.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/INSTALL_RPATH_USE_LINK_PATH.rst b/share/cmake-3.10/Help/prop_tgt/INSTALL_RPATH_USE_LINK_PATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/INSTALL_RPATH_USE_LINK_PATH.rst
rename to share/cmake-3.10/Help/prop_tgt/INSTALL_RPATH_USE_LINK_PATH.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/INTERFACE_AUTOUIC_OPTIONS.rst b/share/cmake-3.10/Help/prop_tgt/INTERFACE_AUTOUIC_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/INTERFACE_AUTOUIC_OPTIONS.rst
rename to share/cmake-3.10/Help/prop_tgt/INTERFACE_AUTOUIC_OPTIONS.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/INTERFACE_BUILD_PROPERTY.txt b/share/cmake-3.10/Help/prop_tgt/INTERFACE_BUILD_PROPERTY.txt
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/INTERFACE_BUILD_PROPERTY.txt
rename to share/cmake-3.10/Help/prop_tgt/INTERFACE_BUILD_PROPERTY.txt
diff --git a/share/cmake-3.6/Help/prop_tgt/INTERFACE_COMPILE_DEFINITIONS.rst b/share/cmake-3.10/Help/prop_tgt/INTERFACE_COMPILE_DEFINITIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/INTERFACE_COMPILE_DEFINITIONS.rst
rename to share/cmake-3.10/Help/prop_tgt/INTERFACE_COMPILE_DEFINITIONS.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/INTERFACE_COMPILE_FEATURES.rst b/share/cmake-3.10/Help/prop_tgt/INTERFACE_COMPILE_FEATURES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/INTERFACE_COMPILE_FEATURES.rst
rename to share/cmake-3.10/Help/prop_tgt/INTERFACE_COMPILE_FEATURES.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/INTERFACE_COMPILE_OPTIONS.rst b/share/cmake-3.10/Help/prop_tgt/INTERFACE_COMPILE_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/INTERFACE_COMPILE_OPTIONS.rst
rename to share/cmake-3.10/Help/prop_tgt/INTERFACE_COMPILE_OPTIONS.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/INTERFACE_INCLUDE_DIRECTORIES.rst b/share/cmake-3.10/Help/prop_tgt/INTERFACE_INCLUDE_DIRECTORIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/INTERFACE_INCLUDE_DIRECTORIES.rst
rename to share/cmake-3.10/Help/prop_tgt/INTERFACE_INCLUDE_DIRECTORIES.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/INTERFACE_LINK_LIBRARIES.rst b/share/cmake-3.10/Help/prop_tgt/INTERFACE_LINK_LIBRARIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/INTERFACE_LINK_LIBRARIES.rst
rename to share/cmake-3.10/Help/prop_tgt/INTERFACE_LINK_LIBRARIES.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/INTERFACE_POSITION_INDEPENDENT_CODE.rst b/share/cmake-3.10/Help/prop_tgt/INTERFACE_POSITION_INDEPENDENT_CODE.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/INTERFACE_POSITION_INDEPENDENT_CODE.rst
rename to share/cmake-3.10/Help/prop_tgt/INTERFACE_POSITION_INDEPENDENT_CODE.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/INTERFACE_SOURCES.rst b/share/cmake-3.10/Help/prop_tgt/INTERFACE_SOURCES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/INTERFACE_SOURCES.rst
rename to share/cmake-3.10/Help/prop_tgt/INTERFACE_SOURCES.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/INTERFACE_SYSTEM_INCLUDE_DIRECTORIES.rst b/share/cmake-3.10/Help/prop_tgt/INTERFACE_SYSTEM_INCLUDE_DIRECTORIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/INTERFACE_SYSTEM_INCLUDE_DIRECTORIES.rst
rename to share/cmake-3.10/Help/prop_tgt/INTERFACE_SYSTEM_INCLUDE_DIRECTORIES.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/INTERPROCEDURAL_OPTIMIZATION.rst b/share/cmake-3.10/Help/prop_tgt/INTERPROCEDURAL_OPTIMIZATION.rst
new file mode 100644
index 0000000..3f68c31
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/INTERPROCEDURAL_OPTIMIZATION.rst
@@ -0,0 +1,11 @@
+INTERPROCEDURAL_OPTIMIZATION
+----------------------------
+
+Enable interprocedural optimization for a target.
+
+If set to true, enables interprocedural optimizations if they are
+known to be supported by the compiler.
+
+This property is initialized by the
+:variable:`CMAKE_INTERPROCEDURAL_OPTIMIZATION` variable if it is set when a
+target is created.
diff --git a/share/cmake-3.10/Help/prop_tgt/INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst
new file mode 100644
index 0000000..782b0f0
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst
@@ -0,0 +1,12 @@
+INTERPROCEDURAL_OPTIMIZATION_<CONFIG>
+-------------------------------------
+
+Per-configuration interprocedural optimization for a target.
+
+This is a per-configuration version of INTERPROCEDURAL_OPTIMIZATION.
+If set, this property overrides the generic property for the named
+configuration.
+
+This property is initialized by the
+:variable:`CMAKE_INTERPROCEDURAL_OPTIMIZATION_<CONFIG>` variable if it is set
+when a target is created.
diff --git a/share/cmake-3.6/Help/prop_tgt/IOS_INSTALL_COMBINED.rst b/share/cmake-3.10/Help/prop_tgt/IOS_INSTALL_COMBINED.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/IOS_INSTALL_COMBINED.rst
rename to share/cmake-3.10/Help/prop_tgt/IOS_INSTALL_COMBINED.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/JOB_POOL_COMPILE.rst b/share/cmake-3.10/Help/prop_tgt/JOB_POOL_COMPILE.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/JOB_POOL_COMPILE.rst
rename to share/cmake-3.10/Help/prop_tgt/JOB_POOL_COMPILE.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/JOB_POOL_LINK.rst b/share/cmake-3.10/Help/prop_tgt/JOB_POOL_LINK.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/JOB_POOL_LINK.rst
rename to share/cmake-3.10/Help/prop_tgt/JOB_POOL_LINK.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/LABELS.rst b/share/cmake-3.10/Help/prop_tgt/LABELS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/LABELS.rst
rename to share/cmake-3.10/Help/prop_tgt/LABELS.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/LANG_CLANG_TIDY.rst b/share/cmake-3.10/Help/prop_tgt/LANG_CLANG_TIDY.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/LANG_CLANG_TIDY.rst
rename to share/cmake-3.10/Help/prop_tgt/LANG_CLANG_TIDY.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst b/share/cmake-3.10/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst
new file mode 100644
index 0000000..28925fc
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst
@@ -0,0 +1,14 @@
+<LANG>_COMPILER_LAUNCHER
+------------------------
+
+This property is implemented only when ``<LANG>`` is ``C``, ``CXX``,
+or ``CUDA``.
+
+Specify a :ref:`;-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.10/Help/prop_tgt/LANG_CPPCHECK.rst b/share/cmake-3.10/Help/prop_tgt/LANG_CPPCHECK.rst
new file mode 100644
index 0000000..5f8be00
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/LANG_CPPCHECK.rst
@@ -0,0 +1,13 @@
+<LANG>_CPPCHECK
+---------------
+
+This property is supported only when ``<LANG>`` is ``C`` or ``CXX``.
+
+Specify a :ref:`;-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.
+
+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.10/Help/prop_tgt/LANG_CPPLINT.rst b/share/cmake-3.10/Help/prop_tgt/LANG_CPPLINT.rst
new file mode 100644
index 0000000..14f47d4
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/LANG_CPPLINT.rst
@@ -0,0 +1,13 @@
+<LANG>_CPPLINT
+--------------
+
+This property is supported only when ``<LANG>`` is ``C`` or ``CXX``.
+
+Specify a :ref:`;-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.6/Help/prop_tgt/LANG_INCLUDE_WHAT_YOU_USE.rst b/share/cmake-3.10/Help/prop_tgt/LANG_INCLUDE_WHAT_YOU_USE.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/LANG_INCLUDE_WHAT_YOU_USE.rst
rename to share/cmake-3.10/Help/prop_tgt/LANG_INCLUDE_WHAT_YOU_USE.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/LANG_VISIBILITY_PRESET.rst b/share/cmake-3.10/Help/prop_tgt/LANG_VISIBILITY_PRESET.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/LANG_VISIBILITY_PRESET.rst
rename to share/cmake-3.10/Help/prop_tgt/LANG_VISIBILITY_PRESET.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/LIBRARY_OUTPUT_DIRECTORY.rst b/share/cmake-3.10/Help/prop_tgt/LIBRARY_OUTPUT_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/LIBRARY_OUTPUT_DIRECTORY.rst
rename to share/cmake-3.10/Help/prop_tgt/LIBRARY_OUTPUT_DIRECTORY.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/LIBRARY_OUTPUT_DIRECTORY_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/LIBRARY_OUTPUT_DIRECTORY_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/LIBRARY_OUTPUT_DIRECTORY_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/LIBRARY_OUTPUT_DIRECTORY_CONFIG.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/LIBRARY_OUTPUT_NAME.rst b/share/cmake-3.10/Help/prop_tgt/LIBRARY_OUTPUT_NAME.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/LIBRARY_OUTPUT_NAME.rst
rename to share/cmake-3.10/Help/prop_tgt/LIBRARY_OUTPUT_NAME.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/LIBRARY_OUTPUT_NAME_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/LIBRARY_OUTPUT_NAME_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/LIBRARY_OUTPUT_NAME_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/LIBRARY_OUTPUT_NAME_CONFIG.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/LINKER_LANGUAGE.rst b/share/cmake-3.10/Help/prop_tgt/LINKER_LANGUAGE.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/LINKER_LANGUAGE.rst
rename to share/cmake-3.10/Help/prop_tgt/LINKER_LANGUAGE.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/LINK_DEPENDS.rst b/share/cmake-3.10/Help/prop_tgt/LINK_DEPENDS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/LINK_DEPENDS.rst
rename to share/cmake-3.10/Help/prop_tgt/LINK_DEPENDS.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/LINK_DEPENDS_NO_SHARED.rst b/share/cmake-3.10/Help/prop_tgt/LINK_DEPENDS_NO_SHARED.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/LINK_DEPENDS_NO_SHARED.rst
rename to share/cmake-3.10/Help/prop_tgt/LINK_DEPENDS_NO_SHARED.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/LINK_FLAGS.rst b/share/cmake-3.10/Help/prop_tgt/LINK_FLAGS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/LINK_FLAGS.rst
rename to share/cmake-3.10/Help/prop_tgt/LINK_FLAGS.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/LINK_FLAGS_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/LINK_FLAGS_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/LINK_FLAGS_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/LINK_FLAGS_CONFIG.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/LINK_INTERFACE_LIBRARIES.rst b/share/cmake-3.10/Help/prop_tgt/LINK_INTERFACE_LIBRARIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/LINK_INTERFACE_LIBRARIES.rst
rename to share/cmake-3.10/Help/prop_tgt/LINK_INTERFACE_LIBRARIES.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/LINK_INTERFACE_LIBRARIES_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/LINK_INTERFACE_LIBRARIES_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/LINK_INTERFACE_LIBRARIES_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/LINK_INTERFACE_LIBRARIES_CONFIG.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/LINK_INTERFACE_MULTIPLICITY.rst b/share/cmake-3.10/Help/prop_tgt/LINK_INTERFACE_MULTIPLICITY.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/LINK_INTERFACE_MULTIPLICITY.rst
rename to share/cmake-3.10/Help/prop_tgt/LINK_INTERFACE_MULTIPLICITY.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/LINK_INTERFACE_MULTIPLICITY_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/LINK_INTERFACE_MULTIPLICITY_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/LINK_INTERFACE_MULTIPLICITY_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/LINK_INTERFACE_MULTIPLICITY_CONFIG.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/LINK_LIBRARIES.rst b/share/cmake-3.10/Help/prop_tgt/LINK_LIBRARIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/LINK_LIBRARIES.rst
rename to share/cmake-3.10/Help/prop_tgt/LINK_LIBRARIES.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/LINK_SEARCH_END_STATIC.rst b/share/cmake-3.10/Help/prop_tgt/LINK_SEARCH_END_STATIC.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/LINK_SEARCH_END_STATIC.rst
rename to share/cmake-3.10/Help/prop_tgt/LINK_SEARCH_END_STATIC.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/LINK_SEARCH_START_STATIC.rst b/share/cmake-3.10/Help/prop_tgt/LINK_SEARCH_START_STATIC.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/LINK_SEARCH_START_STATIC.rst
rename to share/cmake-3.10/Help/prop_tgt/LINK_SEARCH_START_STATIC.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/LINK_WHAT_YOU_USE.rst b/share/cmake-3.10/Help/prop_tgt/LINK_WHAT_YOU_USE.rst
new file mode 100644
index 0000000..32d6edb
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/LINK_WHAT_YOU_USE.rst
@@ -0,0 +1,15 @@
+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.6/Help/prop_tgt/LOCATION.rst b/share/cmake-3.10/Help/prop_tgt/LOCATION.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/LOCATION.rst
rename to share/cmake-3.10/Help/prop_tgt/LOCATION.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/LOCATION_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/LOCATION_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/LOCATION_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/LOCATION_CONFIG.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/MACOSX_BUNDLE.rst b/share/cmake-3.10/Help/prop_tgt/MACOSX_BUNDLE.rst
new file mode 100644
index 0000000..f9e11ee
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/MACOSX_BUNDLE.rst
@@ -0,0 +1,12 @@
+MACOSX_BUNDLE
+-------------
+
+Build an executable as an Application Bundle on OS X or iOS.
+
+When this property is set to ``TRUE`` the executable when built on OS X
+or iOS will be created as an application bundle.  This makes it
+a GUI executable that can be launched from the Finder.  See the
+:prop_tgt:`MACOSX_BUNDLE_INFO_PLIST` target property for information about
+creation of the ``Info.plist`` file for the application bundle.
+This property is initialized by the value of the variable
+:variable:`CMAKE_MACOSX_BUNDLE` if it is set when a target is created.
diff --git a/share/cmake-3.6/Help/prop_tgt/MACOSX_BUNDLE_INFO_PLIST.rst b/share/cmake-3.10/Help/prop_tgt/MACOSX_BUNDLE_INFO_PLIST.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/MACOSX_BUNDLE_INFO_PLIST.rst
rename to share/cmake-3.10/Help/prop_tgt/MACOSX_BUNDLE_INFO_PLIST.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/MACOSX_FRAMEWORK_INFO_PLIST.rst b/share/cmake-3.10/Help/prop_tgt/MACOSX_FRAMEWORK_INFO_PLIST.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/MACOSX_FRAMEWORK_INFO_PLIST.rst
rename to share/cmake-3.10/Help/prop_tgt/MACOSX_FRAMEWORK_INFO_PLIST.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/MACOSX_RPATH.rst b/share/cmake-3.10/Help/prop_tgt/MACOSX_RPATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/MACOSX_RPATH.rst
rename to share/cmake-3.10/Help/prop_tgt/MACOSX_RPATH.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/MANUALLY_ADDED_DEPENDENCIES.rst b/share/cmake-3.10/Help/prop_tgt/MANUALLY_ADDED_DEPENDENCIES.rst
new file mode 100644
index 0000000..c12ea14
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/MANUALLY_ADDED_DEPENDENCIES.rst
@@ -0,0 +1,8 @@
+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.10/Help/prop_tgt/MAP_IMPORTED_CONFIG_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/MAP_IMPORTED_CONFIG_CONFIG.rst
new file mode 100644
index 0000000..266ccf0
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/MAP_IMPORTED_CONFIG_CONFIG.rst
@@ -0,0 +1,70 @@
+MAP_IMPORTED_CONFIG_<CONFIG>
+----------------------------
+
+Map from project configuration to
+:ref:`imported target <IMPORTED targets>`'s configuration.
+
+Set this to the list of configurations of an imported target that may
+be used for the current project's ``<CONFIG>`` configuration.  Targets
+imported from another project may not provide the same set of
+configuration names available in the current project.  Setting this
+property tells CMake what imported configurations are suitable for use
+when building the ``<CONFIG>`` configuration.  The first configuration in
+the list found to be provided by the imported target (i.e. via
+:prop_tgt:`IMPORTED_LOCATION_<CONFIG>` for the mapped-to ``<CONFIG>``)
+is selected.  As a special case, an empty list element refers to the
+configuration-less imported target location
+(i.e. :prop_tgt:`IMPORTED_LOCATION`).
+
+If this property is set and no matching configurations are available,
+then the imported target is considered to be not found.  This property
+is ignored for non-imported targets.
+
+This property is initialized by the value of the
+:variable:`CMAKE_MAP_IMPORTED_CONFIG_<CONFIG>` variable if it is set when a
+target is created.
+
+Example
+^^^^^^^
+
+For example creating imported C++ library ``foo``:
+
+.. code-block:: cmake
+
+  add_library(foo STATIC IMPORTED)
+
+Use ``foo_debug`` path for ``Debug`` build type:
+
+.. code-block:: cmake
+
+  set_property(
+    TARGET foo APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG
+    )
+
+  set_target_properties(foo PROPERTIES
+    IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX"
+    IMPORTED_LOCATION_DEBUG "${foo_debug}"
+    )
+
+Use ``foo_release`` path for ``Release`` build type:
+
+.. code-block:: cmake
+
+  set_property(
+    TARGET foo APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE
+    )
+
+  set_target_properties(foo PROPERTIES
+    IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
+    IMPORTED_LOCATION_RELEASE "${foo_release}"
+    )
+
+Use ``Release`` version of library for ``MinSizeRel`` and ``RelWithDebInfo``
+build types:
+
+.. code-block:: cmake
+
+  set_target_properties(foo PROPERTIES
+    MAP_IMPORTED_CONFIG_MINSIZEREL Release
+    MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release
+    )
diff --git a/share/cmake-3.6/Help/prop_tgt/NAME.rst b/share/cmake-3.10/Help/prop_tgt/NAME.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/NAME.rst
rename to share/cmake-3.10/Help/prop_tgt/NAME.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/NO_SONAME.rst b/share/cmake-3.10/Help/prop_tgt/NO_SONAME.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/NO_SONAME.rst
rename to share/cmake-3.10/Help/prop_tgt/NO_SONAME.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/NO_SYSTEM_FROM_IMPORTED.rst b/share/cmake-3.10/Help/prop_tgt/NO_SYSTEM_FROM_IMPORTED.rst
new file mode 100644
index 0000000..880343d
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/NO_SYSTEM_FROM_IMPORTED.rst
@@ -0,0 +1,15 @@
+NO_SYSTEM_FROM_IMPORTED
+-----------------------
+
+Do not treat include directories from the interfaces of consumed
+:ref:`imported targets` as ``SYSTEM``.
+
+The contents of the :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES` target property
+of imported targets are treated as ``SYSTEM`` includes by default.  If this
+property is enabled on a target, compilation of sources in that target will
+not treat the contents of the ``INTERFACE_INCLUDE_DIRECTORIES`` of consumed
+imported targets as system includes.
+
+This property is initialized by the value of the
+:variable:`CMAKE_NO_SYSTEM_FROM_IMPORTED` variable if it is set when a target
+is created.
diff --git a/share/cmake-3.6/Help/prop_tgt/OSX_ARCHITECTURES.rst b/share/cmake-3.10/Help/prop_tgt/OSX_ARCHITECTURES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/OSX_ARCHITECTURES.rst
rename to share/cmake-3.10/Help/prop_tgt/OSX_ARCHITECTURES.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/OSX_ARCHITECTURES_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/OSX_ARCHITECTURES_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/OSX_ARCHITECTURES_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/OSX_ARCHITECTURES_CONFIG.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/OUTPUT_NAME.rst b/share/cmake-3.10/Help/prop_tgt/OUTPUT_NAME.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/OUTPUT_NAME.rst
rename to share/cmake-3.10/Help/prop_tgt/OUTPUT_NAME.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/OUTPUT_NAME_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/OUTPUT_NAME_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/OUTPUT_NAME_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/OUTPUT_NAME_CONFIG.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/PDB_NAME.rst b/share/cmake-3.10/Help/prop_tgt/PDB_NAME.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/PDB_NAME.rst
rename to share/cmake-3.10/Help/prop_tgt/PDB_NAME.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/PDB_NAME_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/PDB_NAME_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/PDB_NAME_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/PDB_NAME_CONFIG.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/PDB_NOTE.txt b/share/cmake-3.10/Help/prop_tgt/PDB_NOTE.txt
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/PDB_NOTE.txt
rename to share/cmake-3.10/Help/prop_tgt/PDB_NOTE.txt
diff --git a/share/cmake-3.6/Help/prop_tgt/PDB_OUTPUT_DIRECTORY.rst b/share/cmake-3.10/Help/prop_tgt/PDB_OUTPUT_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/PDB_OUTPUT_DIRECTORY.rst
rename to share/cmake-3.10/Help/prop_tgt/PDB_OUTPUT_DIRECTORY.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/PDB_OUTPUT_DIRECTORY_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/PDB_OUTPUT_DIRECTORY_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/PDB_OUTPUT_DIRECTORY_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/PDB_OUTPUT_DIRECTORY_CONFIG.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/POSITION_INDEPENDENT_CODE.rst b/share/cmake-3.10/Help/prop_tgt/POSITION_INDEPENDENT_CODE.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/POSITION_INDEPENDENT_CODE.rst
rename to share/cmake-3.10/Help/prop_tgt/POSITION_INDEPENDENT_CODE.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/POST_INSTALL_SCRIPT.rst b/share/cmake-3.10/Help/prop_tgt/POST_INSTALL_SCRIPT.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/POST_INSTALL_SCRIPT.rst
rename to share/cmake-3.10/Help/prop_tgt/POST_INSTALL_SCRIPT.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/PREFIX.rst b/share/cmake-3.10/Help/prop_tgt/PREFIX.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/PREFIX.rst
rename to share/cmake-3.10/Help/prop_tgt/PREFIX.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/PRE_INSTALL_SCRIPT.rst b/share/cmake-3.10/Help/prop_tgt/PRE_INSTALL_SCRIPT.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/PRE_INSTALL_SCRIPT.rst
rename to share/cmake-3.10/Help/prop_tgt/PRE_INSTALL_SCRIPT.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/PRIVATE_HEADER.rst b/share/cmake-3.10/Help/prop_tgt/PRIVATE_HEADER.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/PRIVATE_HEADER.rst
rename to share/cmake-3.10/Help/prop_tgt/PRIVATE_HEADER.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/PROJECT_LABEL.rst b/share/cmake-3.10/Help/prop_tgt/PROJECT_LABEL.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/PROJECT_LABEL.rst
rename to share/cmake-3.10/Help/prop_tgt/PROJECT_LABEL.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/PUBLIC_HEADER.rst b/share/cmake-3.10/Help/prop_tgt/PUBLIC_HEADER.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/PUBLIC_HEADER.rst
rename to share/cmake-3.10/Help/prop_tgt/PUBLIC_HEADER.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/RESOURCE.rst b/share/cmake-3.10/Help/prop_tgt/RESOURCE.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/RESOURCE.rst
rename to share/cmake-3.10/Help/prop_tgt/RESOURCE.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/RULE_LAUNCH_COMPILE.rst b/share/cmake-3.10/Help/prop_tgt/RULE_LAUNCH_COMPILE.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/RULE_LAUNCH_COMPILE.rst
rename to share/cmake-3.10/Help/prop_tgt/RULE_LAUNCH_COMPILE.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/RULE_LAUNCH_CUSTOM.rst b/share/cmake-3.10/Help/prop_tgt/RULE_LAUNCH_CUSTOM.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/RULE_LAUNCH_CUSTOM.rst
rename to share/cmake-3.10/Help/prop_tgt/RULE_LAUNCH_CUSTOM.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/RULE_LAUNCH_LINK.rst b/share/cmake-3.10/Help/prop_tgt/RULE_LAUNCH_LINK.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/RULE_LAUNCH_LINK.rst
rename to share/cmake-3.10/Help/prop_tgt/RULE_LAUNCH_LINK.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/RUNTIME_OUTPUT_DIRECTORY.rst b/share/cmake-3.10/Help/prop_tgt/RUNTIME_OUTPUT_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/RUNTIME_OUTPUT_DIRECTORY.rst
rename to share/cmake-3.10/Help/prop_tgt/RUNTIME_OUTPUT_DIRECTORY.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/RUNTIME_OUTPUT_DIRECTORY_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/RUNTIME_OUTPUT_DIRECTORY_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/RUNTIME_OUTPUT_DIRECTORY_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/RUNTIME_OUTPUT_DIRECTORY_CONFIG.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/RUNTIME_OUTPUT_NAME.rst b/share/cmake-3.10/Help/prop_tgt/RUNTIME_OUTPUT_NAME.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/RUNTIME_OUTPUT_NAME.rst
rename to share/cmake-3.10/Help/prop_tgt/RUNTIME_OUTPUT_NAME.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/RUNTIME_OUTPUT_NAME_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/RUNTIME_OUTPUT_NAME_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/RUNTIME_OUTPUT_NAME_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/RUNTIME_OUTPUT_NAME_CONFIG.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/SKIP_BUILD_RPATH.rst b/share/cmake-3.10/Help/prop_tgt/SKIP_BUILD_RPATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/SKIP_BUILD_RPATH.rst
rename to share/cmake-3.10/Help/prop_tgt/SKIP_BUILD_RPATH.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/SOURCES.rst b/share/cmake-3.10/Help/prop_tgt/SOURCES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/SOURCES.rst
rename to share/cmake-3.10/Help/prop_tgt/SOURCES.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/SOURCE_DIR.rst b/share/cmake-3.10/Help/prop_tgt/SOURCE_DIR.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/SOURCE_DIR.rst
rename to share/cmake-3.10/Help/prop_tgt/SOURCE_DIR.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/SOVERSION.rst b/share/cmake-3.10/Help/prop_tgt/SOVERSION.rst
new file mode 100644
index 0000000..82b6b97
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/SOVERSION.rst
@@ -0,0 +1,27 @@
+SOVERSION
+---------
+
+What version number is this target.
+
+For shared libraries :prop_tgt:`VERSION` and ``SOVERSION`` can be used to
+specify the build version and API version respectively.  When building or
+installing appropriate symlinks are created if the platform supports
+symlinks and the linker supports so-names.  If only one of both is
+specified the missing is assumed to have the same version number.
+``SOVERSION`` is ignored if :prop_tgt:`NO_SONAME` property is set.
+
+Windows Versions
+^^^^^^^^^^^^^^^^
+
+For shared libraries and executables on Windows the :prop_tgt:`VERSION`
+attribute is parsed to extract a ``<major>.<minor>`` version number.
+These numbers are used as the image version of the binary.
+
+Mach-O Versions
+^^^^^^^^^^^^^^^
+
+For shared libraries and executables on Mach-O systems (e.g. OS X, iOS),
+the ``SOVERSION`` property corresponds to *compatibility version* and
+:prop_tgt:`VERSION` to *current version*.  See the :prop_tgt:`FRAMEWORK` target
+property for an example.  Versions of Mach-O binaries may be checked with the
+``otool -L <binary>`` command.
diff --git a/share/cmake-3.6/Help/prop_tgt/STATIC_LIBRARY_FLAGS.rst b/share/cmake-3.10/Help/prop_tgt/STATIC_LIBRARY_FLAGS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/STATIC_LIBRARY_FLAGS.rst
rename to share/cmake-3.10/Help/prop_tgt/STATIC_LIBRARY_FLAGS.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/STATIC_LIBRARY_FLAGS_CONFIG.rst b/share/cmake-3.10/Help/prop_tgt/STATIC_LIBRARY_FLAGS_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/STATIC_LIBRARY_FLAGS_CONFIG.rst
rename to share/cmake-3.10/Help/prop_tgt/STATIC_LIBRARY_FLAGS_CONFIG.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/SUFFIX.rst b/share/cmake-3.10/Help/prop_tgt/SUFFIX.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/SUFFIX.rst
rename to share/cmake-3.10/Help/prop_tgt/SUFFIX.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/TYPE.rst b/share/cmake-3.10/Help/prop_tgt/TYPE.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/TYPE.rst
rename to share/cmake-3.10/Help/prop_tgt/TYPE.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/VERSION.rst b/share/cmake-3.10/Help/prop_tgt/VERSION.rst
new file mode 100644
index 0000000..66e7bde
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/VERSION.rst
@@ -0,0 +1,29 @@
+VERSION
+-------
+
+What version number is this target.
+
+For shared libraries ``VERSION`` and :prop_tgt:`SOVERSION` can be used
+to specify the build version and API version respectively.  When building or
+installing appropriate symlinks are created if the platform supports
+symlinks and the linker supports so-names.  If only one of both is
+specified the missing is assumed to have the same version number.  For
+executables ``VERSION`` can be used to specify the build version.  When
+building or installing appropriate symlinks are created if the
+platform supports symlinks.
+
+Windows Versions
+^^^^^^^^^^^^^^^^
+
+For shared libraries and executables on Windows the ``VERSION``
+attribute is parsed to extract a ``<major>.<minor>`` version number.
+These numbers are used as the image version of the binary.
+
+Mach-O Versions
+^^^^^^^^^^^^^^^
+
+For shared libraries and executables on Mach-O systems (e.g. OS X, iOS),
+the :prop_tgt:`SOVERSION` property correspond to *compatibility version* and
+``VERSION`` to *current version*.  See the :prop_tgt:`FRAMEWORK` target
+property for an example.  Versions of Mach-O binaries may be checked with the
+``otool -L <binary>`` command.
diff --git a/share/cmake-3.6/Help/prop_tgt/VISIBILITY_INLINES_HIDDEN.rst b/share/cmake-3.10/Help/prop_tgt/VISIBILITY_INLINES_HIDDEN.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/VISIBILITY_INLINES_HIDDEN.rst
rename to share/cmake-3.10/Help/prop_tgt/VISIBILITY_INLINES_HIDDEN.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/VS_CONFIGURATION_TYPE.rst b/share/cmake-3.10/Help/prop_tgt/VS_CONFIGURATION_TYPE.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/VS_CONFIGURATION_TYPE.rst
rename to share/cmake-3.10/Help/prop_tgt/VS_CONFIGURATION_TYPE.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/VS_DEBUGGER_WORKING_DIRECTORY.rst b/share/cmake-3.10/Help/prop_tgt/VS_DEBUGGER_WORKING_DIRECTORY.rst
new file mode 100644
index 0000000..0af85cb
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/VS_DEBUGGER_WORKING_DIRECTORY.rst
@@ -0,0 +1,6 @@
+VS_DEBUGGER_WORKING_DIRECTORY
+-----------------------------
+
+Sets the local debugger working directory for Visual Studio C++ targets.
+This is defined in ``<LocalDebuggerWorkingDirectory>`` in the Visual Studio
+project file.
diff --git a/share/cmake-3.6/Help/prop_tgt/VS_DESKTOP_EXTENSIONS_VERSION.rst b/share/cmake-3.10/Help/prop_tgt/VS_DESKTOP_EXTENSIONS_VERSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/VS_DESKTOP_EXTENSIONS_VERSION.rst
rename to share/cmake-3.10/Help/prop_tgt/VS_DESKTOP_EXTENSIONS_VERSION.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/VS_DOTNET_REFERENCEPROP_refname_TAG_tagname.rst b/share/cmake-3.10/Help/prop_tgt/VS_DOTNET_REFERENCEPROP_refname_TAG_tagname.rst
new file mode 100644
index 0000000..ab311ea
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/VS_DOTNET_REFERENCEPROP_refname_TAG_tagname.rst
@@ -0,0 +1,14 @@
+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.6/Help/prop_tgt/VS_DOTNET_REFERENCES.rst b/share/cmake-3.10/Help/prop_tgt/VS_DOTNET_REFERENCES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/VS_DOTNET_REFERENCES.rst
rename to share/cmake-3.10/Help/prop_tgt/VS_DOTNET_REFERENCES.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/VS_DOTNET_REFERENCES_COPY_LOCAL.rst b/share/cmake-3.10/Help/prop_tgt/VS_DOTNET_REFERENCES_COPY_LOCAL.rst
new file mode 100644
index 0000000..7641ba5
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/VS_DOTNET_REFERENCES_COPY_LOCAL.rst
@@ -0,0 +1,7 @@
+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.10/Help/prop_tgt/VS_DOTNET_REFERENCE_refname.rst b/share/cmake-3.10/Help/prop_tgt/VS_DOTNET_REFERENCE_refname.rst
new file mode 100644
index 0000000..5814005
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/VS_DOTNET_REFERENCE_refname.rst
@@ -0,0 +1,12 @@
+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.6/Help/prop_tgt/VS_DOTNET_TARGET_FRAMEWORK_VERSION.rst b/share/cmake-3.10/Help/prop_tgt/VS_DOTNET_TARGET_FRAMEWORK_VERSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/VS_DOTNET_TARGET_FRAMEWORK_VERSION.rst
rename to share/cmake-3.10/Help/prop_tgt/VS_DOTNET_TARGET_FRAMEWORK_VERSION.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/VS_GLOBAL_KEYWORD.rst b/share/cmake-3.10/Help/prop_tgt/VS_GLOBAL_KEYWORD.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/VS_GLOBAL_KEYWORD.rst
rename to share/cmake-3.10/Help/prop_tgt/VS_GLOBAL_KEYWORD.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/VS_GLOBAL_PROJECT_TYPES.rst b/share/cmake-3.10/Help/prop_tgt/VS_GLOBAL_PROJECT_TYPES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/VS_GLOBAL_PROJECT_TYPES.rst
rename to share/cmake-3.10/Help/prop_tgt/VS_GLOBAL_PROJECT_TYPES.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/VS_GLOBAL_ROOTNAMESPACE.rst b/share/cmake-3.10/Help/prop_tgt/VS_GLOBAL_ROOTNAMESPACE.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/VS_GLOBAL_ROOTNAMESPACE.rst
rename to share/cmake-3.10/Help/prop_tgt/VS_GLOBAL_ROOTNAMESPACE.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/VS_GLOBAL_variable.rst b/share/cmake-3.10/Help/prop_tgt/VS_GLOBAL_variable.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/VS_GLOBAL_variable.rst
rename to share/cmake-3.10/Help/prop_tgt/VS_GLOBAL_variable.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/VS_IOT_EXTENSIONS_VERSION.rst b/share/cmake-3.10/Help/prop_tgt/VS_IOT_EXTENSIONS_VERSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/VS_IOT_EXTENSIONS_VERSION.rst
rename to share/cmake-3.10/Help/prop_tgt/VS_IOT_EXTENSIONS_VERSION.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/VS_IOT_STARTUP_TASK.rst b/share/cmake-3.10/Help/prop_tgt/VS_IOT_STARTUP_TASK.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/VS_IOT_STARTUP_TASK.rst
rename to share/cmake-3.10/Help/prop_tgt/VS_IOT_STARTUP_TASK.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/VS_KEYWORD.rst b/share/cmake-3.10/Help/prop_tgt/VS_KEYWORD.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/VS_KEYWORD.rst
rename to share/cmake-3.10/Help/prop_tgt/VS_KEYWORD.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/VS_MOBILE_EXTENSIONS_VERSION.rst b/share/cmake-3.10/Help/prop_tgt/VS_MOBILE_EXTENSIONS_VERSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/VS_MOBILE_EXTENSIONS_VERSION.rst
rename to share/cmake-3.10/Help/prop_tgt/VS_MOBILE_EXTENSIONS_VERSION.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/VS_SCC_AUXPATH.rst b/share/cmake-3.10/Help/prop_tgt/VS_SCC_AUXPATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/VS_SCC_AUXPATH.rst
rename to share/cmake-3.10/Help/prop_tgt/VS_SCC_AUXPATH.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/VS_SCC_LOCALPATH.rst b/share/cmake-3.10/Help/prop_tgt/VS_SCC_LOCALPATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/VS_SCC_LOCALPATH.rst
rename to share/cmake-3.10/Help/prop_tgt/VS_SCC_LOCALPATH.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/VS_SCC_PROJECTNAME.rst b/share/cmake-3.10/Help/prop_tgt/VS_SCC_PROJECTNAME.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/VS_SCC_PROJECTNAME.rst
rename to share/cmake-3.10/Help/prop_tgt/VS_SCC_PROJECTNAME.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/VS_SCC_PROVIDER.rst b/share/cmake-3.10/Help/prop_tgt/VS_SCC_PROVIDER.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/VS_SCC_PROVIDER.rst
rename to share/cmake-3.10/Help/prop_tgt/VS_SCC_PROVIDER.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/VS_SDK_REFERENCES.rst b/share/cmake-3.10/Help/prop_tgt/VS_SDK_REFERENCES.rst
new file mode 100644
index 0000000..769a0d1
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/VS_SDK_REFERENCES.rst
@@ -0,0 +1,7 @@
+VS_SDK_REFERENCES
+-----------------
+
+Visual Studio project SDK references.
+Specify a :ref:`;-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.10/Help/prop_tgt/VS_USER_PROPS.rst b/share/cmake-3.10/Help/prop_tgt/VS_USER_PROPS.rst
new file mode 100644
index 0000000..1be222b
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/VS_USER_PROPS.rst
@@ -0,0 +1,12 @@
+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.6/Help/prop_tgt/VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION.rst b/share/cmake-3.10/Help/prop_tgt/VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION.rst
rename to share/cmake-3.10/Help/prop_tgt/VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/VS_WINRT_COMPONENT.rst b/share/cmake-3.10/Help/prop_tgt/VS_WINRT_COMPONENT.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/VS_WINRT_COMPONENT.rst
rename to share/cmake-3.10/Help/prop_tgt/VS_WINRT_COMPONENT.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/VS_WINRT_EXTENSIONS.rst b/share/cmake-3.10/Help/prop_tgt/VS_WINRT_EXTENSIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/VS_WINRT_EXTENSIONS.rst
rename to share/cmake-3.10/Help/prop_tgt/VS_WINRT_EXTENSIONS.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/VS_WINRT_REFERENCES.rst b/share/cmake-3.10/Help/prop_tgt/VS_WINRT_REFERENCES.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/VS_WINRT_REFERENCES.rst
rename to share/cmake-3.10/Help/prop_tgt/VS_WINRT_REFERENCES.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/WIN32_EXECUTABLE.rst b/share/cmake-3.10/Help/prop_tgt/WIN32_EXECUTABLE.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/WIN32_EXECUTABLE.rst
rename to share/cmake-3.10/Help/prop_tgt/WIN32_EXECUTABLE.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst b/share/cmake-3.10/Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst
new file mode 100644
index 0000000..86711bf
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst
@@ -0,0 +1,26 @@
+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.6/Help/prop_tgt/XCODE_ATTRIBUTE_an-attribute.rst b/share/cmake-3.10/Help/prop_tgt/XCODE_ATTRIBUTE_an-attribute.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/XCODE_ATTRIBUTE_an-attribute.rst
rename to share/cmake-3.10/Help/prop_tgt/XCODE_ATTRIBUTE_an-attribute.rst
diff --git a/share/cmake-3.10/Help/prop_tgt/XCODE_EXPLICIT_FILE_TYPE.rst b/share/cmake-3.10/Help/prop_tgt/XCODE_EXPLICIT_FILE_TYPE.rst
new file mode 100644
index 0000000..dc92902
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/XCODE_EXPLICIT_FILE_TYPE.rst
@@ -0,0 +1,8 @@
+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.10/Help/prop_tgt/XCODE_PRODUCT_TYPE.rst b/share/cmake-3.10/Help/prop_tgt/XCODE_PRODUCT_TYPE.rst
new file mode 100644
index 0000000..f4ef5c0
--- /dev/null
+++ b/share/cmake-3.10/Help/prop_tgt/XCODE_PRODUCT_TYPE.rst
@@ -0,0 +1,8 @@
+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.6/Help/prop_tgt/XCTEST.rst b/share/cmake-3.10/Help/prop_tgt/XCTEST.rst
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/XCTEST.rst
rename to share/cmake-3.10/Help/prop_tgt/XCTEST.rst
diff --git a/share/cmake-3.6/Help/prop_tgt/XXX_OUTPUT_DIRECTORY.txt b/share/cmake-3.10/Help/prop_tgt/XXX_OUTPUT_DIRECTORY.txt
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/XXX_OUTPUT_DIRECTORY.txt
rename to share/cmake-3.10/Help/prop_tgt/XXX_OUTPUT_DIRECTORY.txt
diff --git a/share/cmake-3.6/Help/prop_tgt/XXX_OUTPUT_NAME.txt b/share/cmake-3.10/Help/prop_tgt/XXX_OUTPUT_NAME.txt
similarity index 100%
rename from share/cmake-3.6/Help/prop_tgt/XXX_OUTPUT_NAME.txt
rename to share/cmake-3.10/Help/prop_tgt/XXX_OUTPUT_NAME.txt
diff --git a/share/cmake-3.6/Help/release/3.0.rst b/share/cmake-3.10/Help/release/3.0.rst
similarity index 100%
rename from share/cmake-3.6/Help/release/3.0.rst
rename to share/cmake-3.10/Help/release/3.0.rst
diff --git a/share/cmake-3.6/Help/release/3.1.rst b/share/cmake-3.10/Help/release/3.1.rst
similarity index 100%
rename from share/cmake-3.6/Help/release/3.1.rst
rename to share/cmake-3.10/Help/release/3.1.rst
diff --git a/share/cmake-3.10/Help/release/3.10.rst b/share/cmake-3.10/Help/release/3.10.rst
new file mode 100644
index 0000000..6a19dbf
--- /dev/null
+++ b/share/cmake-3.10/Help/release/3.10.rst
@@ -0,0 +1,269 @@
+CMake 3.10 Release Notes
+************************
+
+.. only:: html
+
+  .. contents::
+
+Changes made since CMake 3.9 include the following.
+
+New Features
+============
+
+Platforms
+---------
+
+* The `flang`_ Fortran compiler is now supported, with compiler id ``Flang``.
+
+* A new minimal platform file for ``Midipix`` was added.
+
+* Support for the MSVC ARM64 architecture was added.
+  Visual Studio 2017 Update 4 and above offer an ARM64 toolchain.
+
+* Support for the IAR ARM Compiler was improved.
+
+.. _`flang`: https://github.com/flang-compiler/flang
+
+Generators
+----------
+
+* The :ref:`Makefile Generators` and the :generator:`Ninja` generator learned
+  to add compiler launcher tools like ccache along with the compiler for the
+  ``CUDA`` language (``C`` and ``CXX`` were supported previously).  See the
+  :variable:`CMAKE_<LANG>_COMPILER_LAUNCHER` variable and
+  :prop_tgt:`<LANG>_COMPILER_LAUNCHER` target property for details.
+
+* The :generator:`CodeBlocks` extra generator learned to optionally exclude
+  files from outside the project root directory from the generated project.
+  See the :variable:`CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES` variable.
+
+Commands
+--------
+
+* The :command:`cmake_host_system_information` command learned more keys
+  to get information about the processor capabilities and the host OS
+  version.
+
+* The :command:`configure_file` command learned to support indented
+  ``#  cmakedefine`` and ``#  cmakedefine01``. Spaces and/or tabs between
+  the ``#`` character and the ``cmakedefine``/``cmakedefine01`` words
+  are now understood and preserved in the output.
+
+* The :command:`execute_process` command gained a ``RESULTS_VARIABLE``
+  option to collect a list of results from all children in a pipeline
+  of processes when multiple ``COMMAND`` arguments are given.
+
+* The :command:`include_guard` command was introduced to allow guarding
+  CMake scripts from being included more than once. The command supports
+  ``DIRECTORY`` and ``GLOBAL`` options to adjust the corresponding include guard
+  scope. If no options given, include guard is similar to basic variable-based
+  check.
+
+* The :command:`string` command learned a new ``PREPEND`` subcommand.
+
+* The :command:`string(TIMESTAMP)` command now supports ``%A``
+  for full weekday name and ``%B`` for full month name.
+
+Variables
+---------
+
+* A :variable:`CMAKE_DIRECTORY_LABELS` variable was added to specify
+  labels for all tests in a directory.
+
+Properties
+----------
+
+* A :prop_tgt:`<LANG>_CPPCHECK` target property and supporting
+  :variable:`CMAKE_<LANG>_CPPCHECK` variable were introduced to tell
+  the :ref:`Makefile Generators` and the :generator:`Ninja` generator to
+  run ``cppcheck`` with the compiler for ``C`` and ``CXX`` languages.
+
+* A :prop_dir:`LABELS` directory property was added to specify labels
+  for all targets and tests in a directory.
+
+* A :prop_dir:`TEST_INCLUDE_FILES` directory property was added to
+  list any number of files to be included when running tests with
+  :manual:`ctest(1)`.  This generalizes the :prop_dir:`TEST_INCLUDE_FILE`
+  property.
+
+* The :prop_tgt:`VS_DOTNET_REFERENCEPROP_<refname>_TAG_<tagname>`
+  target property was added to support custom XML tags for reference
+  assemblies in C# targets.
+
+* Source file properties :prop_sf:`VS_SHADER_OUTPUT_HEADER_FILE` and
+  :prop_sf:`VS_SHADER_VARIABLE_NAME` have been added to specify more
+  details of ``.hlsl`` sources with :ref:`Visual Studio Generators`.
+
+Modules
+-------
+
+* The :module:`FindCurses` module gained a ``CURSES_NEED_WIDE`` option
+  to request the wide-character variant.
+
+* The :module:`FindEXPAT` module now provides imported targets.
+
+* The :module:`FindFreetype` module now provides imported targets.
+
+* :module:`FindMPI` gained a number of new features, including:
+
+  * Language-specific components have been added to the module.
+  * Many more MPI environments are now supported.
+  * The environmental support for Fortran has been improved.
+  * A user now has fine-grained control over the MPI selection process,
+    including passing custom parameters to the MPI compiler.
+  * The version of the implemented MPI standard is now being exposed.
+  * MPI-2 C++ bindings can now be detected and also suppressed if so desired.
+  * The available Fortran bindings are now being detected and verified.
+  * Various MPI-3 information can be requested, including the library version
+    and Fortran capabilities of the individual bindings.
+  * Statically linked MPI implementations are supported.
+
+* A :module:`FindOpenACC` module was added to detect compiler support
+  for OpenACC.  Currently only supports PGI, GNU and Cray compilers.
+
+* The :module:`FindOpenGL` module gained support for GLVND on Linux.
+
+* The :module:`FindOpenMP` module gained support for
+  language-specific components.
+
+* A :module:`FindPatch` module was added to find the ``patch``
+  command-line executable.
+
+* The :module:`FindProtobuf` module :command:`protobuf_generate_cpp` command
+  gained a ``DESCRIPTORS`` option to generate descriptor files.
+
+* The :module:`GoogleTest` module gained a new command
+  :command:`gtest_discover_tests` implementing dynamic (build-time) test
+  discovery.  Unlike the source parsing approach, dynamic discovery executes
+  the test (in 'list available tests' mode) at build time to discover tests.
+  This is robust against unusual ways of labeling tests, provides much better
+  support for advanced features such as parameterized tests, and does not
+  require re-running CMake to discover added or removed tests within a test
+  executable.
+
+* The :module:`InstallRequiredSystemLibraries` module gained support
+  for installing Intel compiler runtimes.
+
+Autogen
+-------
+
+* When using :prop_tgt:`AUTOMOC` or :prop_tgt:`AUTOUIC` with a
+  multi configuration generator (e.g. :generator:`Xcode`),
+  included ``*.moc``,  ``moc_*.cpp`` and ``ui_*.h`` files are generated in
+  ``<AUTOGEN_BUILD_DIR>/include_<CONFIG>`` instead of
+  ``<AUTOGEN_BUILD_DIR>/include``.
+
+* When using :prop_tgt:`AUTOMOC` or :prop_tgt:`AUTOUIC`,
+  source files that are :prop_sf:`GENERATED` will be processed as well.
+  They were ignored by :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC`
+  in earlier releases.
+  See policy :policy:`CMP0071`.
+
+* When using :prop_tgt:`AUTOMOC`, CMake searches for the strings ``Q_OBJECT``,
+  ``Q_GADGET`` or ``Q_NAMESPACE`` in a source file to determine if it needs
+  to be ``moc`` processed.  The new :variable:`CMAKE_AUTOMOC_MACRO_NAMES`
+  variable and :prop_tgt:`AUTOMOC_MACRO_NAMES` target property may be set
+  to register additional strings (macro names) to search for.
+
+* When using :prop_tgt:`AUTOMOC`, the new
+  :variable:`CMAKE_AUTOMOC_COMPILER_PREDEFINES` variable and
+  :prop_tgt:`AUTOMOC_COMPILER_PREDEFINES` target property specify whether
+  to enable or disable the generation of the compiler pre definitions file
+  ``moc_predefs.h``.
+
+CTest
+-----
+
+* A :variable:`CTEST_LABELS_FOR_SUBPROJECTS` CTest module variable and CTest
+  script variable were added to specify a list of labels that should be
+  treated as subprojects by CDash. To use this value in both the CTest module
+  and the ctest command line :ref:`Dashboard Client` mode (e.g. ``ctest -S``)
+  set it in the ``CTestConfig.cmake`` config file.
+
+CPack
+-----
+
+* CPack gained a ``FREEBSD`` generator for FreeBSD ``pkg(8)``, configured
+  by the :module:`CPackFreeBSD` module.
+
+* The CPack ``DEB`` generator, configured by the :module:`CPackDeb` module,
+  was enabled on Windows.  While not fully featured (due to the lack of
+  external UNIX tools) this will allow building basic cross-platform Debian
+  packages.
+
+* The :module:`CPackDeb` module learned to set package release version in
+  ``Version`` info property.
+  See the :variable:`CPACK_DEBIAN_PACKAGE_RELEASE` variable.
+
+* The :module:`CPackDeb` module learned more strict package version checking
+  that complies with Debian rules.
+
+* The :module:`CPackIFW` module :command:`cpack_ifw_configure_component` and
+  :command:`cpack_ifw_configure_component_group` commands gained a new
+  ``REPLACES`` and ``CHECKABLE`` options.
+
+* The :module:`CPackIFW` module gained new
+  :variable:`CPACK_IFW_PACKAGE_FILE_EXTENSION` variable to customize
+  target binary format.
+
+* The :module:`CPackIFW` module gained new
+  :variable:`CPACK_IFW_REPOSITORIES_DIRECTORIES` variable to specify
+  additional repositories dirs that will be used to resolve and
+  repack dependent components. This feature is only available when
+  using QtIFW 3.1 or later.
+
+* Modules :module:`CPackRPM` and :module:`CPackDeb` learned to set package epoch
+  version.
+  See :variable:`CPACK_RPM_PACKAGE_EPOCH` and
+  :variable:`CPACK_DEBIAN_PACKAGE_EPOCH` variables.
+
+Other
+-----
+
+* The :manual:`cmake(1)` ``-E`` mode gained support for ``sha1sum``,
+  ``sha224sum``, ``sha256sum``, ``sha384sum``, and ``sha512sum``.
+
+* The graphviz output now distinguishes among the different dependency types
+  ``PUBLIC``, ``PRIVATE`` and ``INTERFACE`` and represents them in the output
+  graph as solid, dashed and dotted edges.
+
+Deprecated and Removed Features
+===============================
+
+* Support for building CMake itself with C++98 compilers was dropped.
+  CMake is now implemented using C++11.
+
+* Support for building CMake on HP-UX has been dropped pending better
+  support for C++11 and a port of libuv.  See `CMake Issue 17137`_.
+  Use CMake 3.9 or lower instead for HP-UX support.
+
+.. _`CMake Issue 17137`: https://gitlab.kitware.com/cmake/cmake/issues/17137
+
+Other Changes
+=============
+
+* On FreeBSD the C++ compiler named ``c++`` is now the preferred default.
+
+* The :command:`file(GENERATE)` command now interprets relative paths
+  given to its ``OUTPUT`` and ``INPUT`` arguments with respect to the
+  caller's current binary and source directories, respectively.
+  See policy :policy:`CMP0070`.
+
+* The :command:`get_filename_component` ``PROGRAM`` mode semantics
+  have been revised to not tolerate unquoted spaces in the path
+  to the program while also accepting arguments.  While technically
+  incompatible with the old behavior, it is expected that behavior
+  under typical use cases with properly-quoted command-lines has
+  not changed.
+
+Updates
+=======
+
+Changes made since CMake 3.10.0 include the following.
+
+3.10.1
+------
+
+* The :manual:`cmake-server(7)` ``codemodel`` response ``crossReferences``
+  field added by 3.10.0 has been dropped due to excessive memory usage.
+  Another approach will be needed to provide backtrace information.
diff --git a/share/cmake-3.6/Help/release/3.2.rst b/share/cmake-3.10/Help/release/3.2.rst
similarity index 100%
rename from share/cmake-3.6/Help/release/3.2.rst
rename to share/cmake-3.10/Help/release/3.2.rst
diff --git a/share/cmake-3.6/Help/release/3.3.rst b/share/cmake-3.10/Help/release/3.3.rst
similarity index 100%
rename from share/cmake-3.6/Help/release/3.3.rst
rename to share/cmake-3.10/Help/release/3.3.rst
diff --git a/share/cmake-3.6/Help/release/3.4.rst b/share/cmake-3.10/Help/release/3.4.rst
similarity index 100%
rename from share/cmake-3.6/Help/release/3.4.rst
rename to share/cmake-3.10/Help/release/3.4.rst
diff --git a/share/cmake-3.6/Help/release/3.5.rst b/share/cmake-3.10/Help/release/3.5.rst
similarity index 100%
rename from share/cmake-3.6/Help/release/3.5.rst
rename to share/cmake-3.10/Help/release/3.5.rst
diff --git a/share/cmake-3.10/Help/release/3.6.rst b/share/cmake-3.10/Help/release/3.6.rst
new file mode 100644
index 0000000..144537d
--- /dev/null
+++ b/share/cmake-3.10/Help/release/3.6.rst
@@ -0,0 +1,316 @@
+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 initalized 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 :module:`CPackDeb` module learned how to handle ``$ORIGIN``
+  in ``CMAKE_INSTALL_RPATH`` when :variable:`CPACK_DEBIAN_PACKAGE_SHLIBDEPS`
+  is used for dependency auto detection.
+
+* The :module:`CPackDeb` module learned how to generate ``DEBIAN/shlibs``
+  contorl file when package contains shared libraries.
+
+* The :module:`CPackDeb` module 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 :module:`CPackDeb` module 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 :module:`CPackDeb` module 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 :module:`CPackDeb` module 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 :module:`CPackDeb` module learned how to set the package architecture
+  per-component.  See :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_ARCHITECTURE`.
+
+* The :module:`CPackDMG` module learned a new option to tell the CPack
+  ``DragNDrop`` generaor 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 :module:`CPackRPM` module 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 :module:`CPackRPM` module 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 :module:`CPackRPM` module 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 :module:`CPackRPM` module 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:`;-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 :module:`CPackRPM` module 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.10/Help/release/3.7.rst b/share/cmake-3.10/Help/release/3.7.rst
new file mode 100644
index 0000000..4c51af4
--- /dev/null
+++ b/share/cmake-3.10/Help/release/3.7.rst
@@ -0,0 +1,320 @@
+CMake 3.7 Release Notes
+***********************
+
+.. only:: html
+
+  .. contents::
+
+Changes made since CMake 3.6 include the following.
+
+New Features
+============
+
+Platforms
+---------
+
+* CMake now supports :ref:`Cross Compiling for Android` with simple
+  toolchain files.
+
+* The Clang compiler is now supported on AIX.
+
+Generators
+----------
+
+* The :generator:`Ninja` generator learned to conditionally support
+  Fortran when using a ``ninja`` tool that has the necessary features.
+  See generator documentation for details.
+
+* The :generator:`Ninja` generator learned to produce phony targets
+  of the form ``sub/dir/{test,install,package}`` to drive the build
+  of a subdirectory installation, test or packaging target.
+  This is equivalent to ``cd sub/dir; make {test,install,package}``
+  with :ref:`Makefile Generators`.
+
+* The :generator:`Visual Studio 15 2017` generator was added.  This is
+  experimental and based on "Visual Studio 2017 RC" because this version
+  of VS has not been released.
+
+* :ref:`Visual Studio Generators` for VS 2010 and above learned to
+  place ``.natvis`` source files into VS project files properly.
+
+* The :generator:`Xcode` generator's rudimentary Swift language support
+  learned to honor a new :variable:`CMAKE_Swift_LANGUAGE_VERSION` variable
+  to tell Xcode what version of Swift is used by the source.
+
+* The :generator:`CodeLite` generator gained a new
+  :variable:`CMAKE_CODELITE_USE_TARGETS` option
+  to change project creation from projects to targets.
+
+Commands
+--------
+
+* The :command:`add_custom_command` command gained a new ``DEPFILE``
+  option that works with the :generator:`Ninja` generator to provide
+  implicit dependency information to the build tool.
+
+* The :command:`cmake_parse_arguments` command gained a new ``PARSE_ARGV``
+  mode to read arguments directly from ``ARGC`` and ``ARGV#``
+  variables inside a :command:`function` body.
+
+* The :command:`export` command gained an ``ANDROID_MK`` option
+  to generate ``Android.mk`` files referencing CMake-built
+  libraries as prebuilts for the Android NDK build system.
+
+* The :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands gained
+  ``HTTPHEADER <HTTP-header>`` and ``USERPWD <username>:<password>`` options.
+
+* The :command:`find_library` and :command:`find_package` commands learned
+  to search in ``lib32/`` directories when the build targets a 32-bit
+  architecture.  See the :prop_gbl:`FIND_LIBRARY_USE_LIB32_PATHS` global
+  property.
+
+* The :command:`find_package` command gained the possibility of
+  sorting compatible libraries by ``NAME`` or by ``NATURAL`` sorting by
+  setting the two new variables :variable:`CMAKE_FIND_PACKAGE_SORT_ORDER`
+  and :variable:`CMAKE_FIND_PACKAGE_SORT_DIRECTION`.
+
+* The :command:`if` command gained new boolean comparison operations
+  ``LESS_EQUAL``, ``GREATER_EQUAL``, ``STRLESS_EQUAL``, ``STRGREATER_EQUAL``,
+  ``VERSION_LESS_EQUAL``, and ``VERSION_GREATER_EQUAL``.
+
+* The :command:`install` command gained an ``EXPORT_ANDROID_MK``
+  subcommand to install ``Android.mk`` files referencing installed
+  libraries as prebuilts for the Android NDK build system.
+
+* The :command:`string(TIMESTAMP)` and :command:`file(TIMESTAMP)`
+  commands gained support for the ``%a`` and ``%b`` placeholders.
+  These are the abbreviated weekday and month names.
+
+* The :command:`try_compile` command source file signature now honors
+  configuration-specific flags (e.g. :variable:`CMAKE_<LANG>_FLAGS_DEBUG`)
+  in the generated test project.  Previously only the default such flags
+  for the current toolchain were used.  See policy :policy:`CMP0066`.
+
+Variables
+---------
+
+* Variable :variable:`CMAKE_FIND_PACKAGE_SORT_ORDER` was added to control
+  the sorting mode of the :command:`find_package` command.
+
+* Variable :variable:`CMAKE_FIND_PACKAGE_SORT_DIRECTION` was added to control
+  the sorting direction the :command:`find_package` command.
+
+* :variable:`Toolchain files <CMAKE_TOOLCHAIN_FILE>` may now set a
+  :variable:`CMAKE_<LANG>_FLAGS_INIT` variable to initialize the
+  :variable:`CMAKE_<LANG>_FLAGS` cache entry the first time a language is
+  enabled in a build tree.
+
+* :variable:`Toolchain files <CMAKE_TOOLCHAIN_FILE>` may now set
+  :variable:`CMAKE_EXE_LINKER_FLAGS_INIT`,
+  :variable:`CMAKE_SHARED_LINKER_FLAGS_INIT`, and
+  :variable:`CMAKE_MODULE_LINKER_FLAGS_INIT` variables to initialize the
+  :variable:`CMAKE_EXE_LINKER_FLAGS`,
+  :variable:`CMAKE_SHARED_LINKER_FLAGS`, and
+  :variable:`CMAKE_MODULE_LINKER_FLAGS` cache entries the first time
+  a language is enabled in a build tree.
+
+Properties
+----------
+
+* On Apple platforms the :prop_tgt:`BUNDLE_EXTENSION` target property
+  now also applies to Frameworks and App Bundles.
+
+* A :prop_dir:`BINARY_DIR` directory property was added to get the
+  absolute path to the binary directory corresponding to the source
+  directory on which the property is read.
+
+* A :prop_dir:`BUILDSYSTEM_TARGETS` directory property was added to
+  get the list of logical buildsystem target names added by the
+  project in a directory.
+
+* A :prop_tgt:`LINK_WHAT_YOU_USE` target property and supporting
+  :variable:`CMAKE_LINK_WHAT_YOU_USE` variable were introduced
+  to detect (on UNIX) shared libraries that are linked but not
+  needed by running ``ldd -r -u``.
+
+* A :prop_dir:`SOURCE_DIR` directory property was added to get the
+  absolute path to the source directory associated with a directory.
+
+* A :prop_dir:`SUBDIRECTORIES` directory property was added to
+  get the list of subdirectories added by a project in a directory.
+
+* A :prop_tgt:`VS_SDK_REFERENCES` target property was added to tell
+  :ref:`Visual Studio Generators` to reference the named SDKs.
+
+* A :prop_sf:`VS_TOOL_OVERRIDE` source file property was created to tell
+  :ref:`Visual Studio Generators` what tool to use for a source file.
+
+* The :prop_tgt:`WINDOWS_EXPORT_ALL_SYMBOLS` target property now applies
+  to executable targets with the :prop_tgt:`ENABLE_EXPORTS` property set.
+
+* A :prop_sf:`XCODE_FILE_ATTRIBUTES` source file property was
+  added to tell the :generator:`Xcode` generator to generate
+  custom content in the Xcode project attributes for the file.
+
+Modules
+-------
+
+* An :module:`AndroidTestUtilities` module was added to manage transfer
+  of test data to an Android device.
+
+* The :module:`CheckFortranSourceCompiles` module macro
+  ``CHECK_Fortran_SOURCE_COMPILES`` gained a ``SRC_EXT`` option
+  to specify a custom test Fortran source file extension.
+
+* The :module:`ExternalProject` module gained ``HTTP_USERNAME`` and
+  ``HTTP_PASSWORD`` options to set http download credentials.
+
+* The :module:`ExternalProject` module gained a ``HTTP_HEADER``
+  option to add http download headers.
+
+* The :module:`FindBISON` module ``BISON_TARGET`` macro learned a new
+  ``REPORT_FILE`` option to specify the bison ``--report-file=`` option.
+
+* The :module:`FindBZip2` module now provides imported targets.
+
+* A :module:`FindICU` module was introduced to find the International
+  Components for Unicode (ICU) libraries and programs.
+
+* The :module:`FindMatlab` module learned to find the SIMULINK and MAT
+  components.
+
+* The :module:`FindMatlab` module :command:`matlab_add_mex` command learned
+  to add executables and modules.
+
+* The :module:`FindMatlab` module :command:`matlab_add_unit_test` command
+  learned to support inline Matlab test code.
+
+* The :module:`FindOpenCL` module now provides imported targets.
+
+* The :module:`FindOpenMP` module learned to detect the OpenMP
+  version (specification date) from the compiler.
+
+* A :module:`FindVulkan` module was added.
+
+* The :module:`GenerateExportHeader` module learned a new
+  ``CUSTOM_CONTENT_FROM_VARIABLE`` option to specify a variable
+  containing custom content for inclusion in the generated header.
+
+* The :module:`GNUInstallDirs` module gained a new
+  :command:`GNUInstallDirs_get_absolute_install_dir` command.
+
+* The :module:`UseJava` module gained APIs to "export" jar targets
+  for use by external CMake projects.  See the ``install_jar_exports``
+  and ``export_jars`` functions.
+
+CTest
+-----
+
+* CTest now supports test fixtures through the new :prop_test:`FIXTURES_SETUP`,
+  :prop_test:`FIXTURES_CLEANUP` and :prop_test:`FIXTURES_REQUIRED` test
+  properties. When using regular expressions or ``--rerun-failed`` to limit
+  the tests to be run, a fixture's setup and cleanup tests will automatically
+  be added to the execution set if any test requires that fixture.
+
+* The :command:`ctest_configure`, :command:`ctest_build`,
+  :command:`ctest_test`, :command:`ctest_coverage`, and :command:`ctest_upload`
+  commands gained a new ``CAPTURE_CMAKE_ERROR`` option to capture any errors
+  that occur as the commands run into a variable and avoid affecting the return
+  code of the :manual:`ctest(1)` process.
+
+CPack
+-----
+
+* CPack gained a ``productbuild`` generator on OS X, configured by
+  the :module:`CPackProductBuild` module.
+
+* CPack gained a new :variable:`CPACK_PACKAGE_CHECKSUM` variable to
+  enable generation of a checksum file for each package file.
+
+* The :module:`CPackDeb` module learned to support long file names
+  when archive format is set to GNU tar.
+  See :variable:`CPACK_DEBIAN_ARCHIVE_TYPE`
+
+* The :module:`CPackIFW` module gained a new
+  :command:`cpack_ifw_add_package_resources` command to include additional
+  resources in the installer binary.
+
+* The :module:`CPackIFW` module :command:`cpack_ifw_configure_component` and
+  :command:`cpack_ifw_configure_component_group` commands gained a new
+  ``USER_INTERFACES`` option to add a list of additonal pages to the IFW
+  installer.
+
+* The :module:`CPackRPM` module learned to generate debuginfo
+  packages on demand. See :variable:`CPACK_RPM_DEBUGINFO_PACKAGE`
+  and its per component version.
+
+* The :module:`CPackRPM` module learned to generate source rpm
+  (SRPM) packages on demand. See :variable:`CPACK_RPM_PACKAGE_SOURCES`,
+  :variable:`CPACK_RPM_SOURCE_PKG_BUILD_PARAMS` and
+  :variable:`CPACK_RPM_SOURCE_PKG_PACKAGING_INSTALL_PREFIX`.
+
+* The CPack NSIS generator now supports
+  :variable:`CPACK_NSIS_<compName>_INSTALL_DIRECTORY`.
+  This can be used to set component specific installation directories.
+
+* The CPack WIX generator now supports
+  :variable:`CPACK_WIX_SKIP_PROGRAM_FOLDER` to allow specification
+  of a custom absolute installation prefix outside
+  of the ProgramFiles folders.
+
+* The CPack WIX generator now supports
+  :variable:`CPACK_COMPONENT_<compName>_DISABLED`.
+  This can be used to deselect a component from being installed by default.
+
+* The CPack WIX generator now supports :variable:`CPACK_WIX_PATCH_FILE`
+  fragments for Feature elements.
+
+* The CPack WIX generator now supports
+  :variable:`CPACK_WIX_ROOT_FEATURE_TITLE` and
+  :variable:`CPACK_WIX_ROOT_FEATURE_DESCRIPTION` to allow the specification
+  of a custom title and description for the root feature element.
+
+Other
+-----
+
+* :manual:`cmake(1)` gained a ``-E capabilities`` option to provide a
+  machine-readable (JSON) description of the capabilities of the
+  cmake tool (available generators, etc.).
+
+* A new :manual:`cmake-server(7)` mode was added to provide semantic
+  information about a CMake-generated buildsystem to clients through
+  a JSON protocol.  Currently all protocols are experimental and subject
+  to change.
+
+* The :manual:`cmake(1)` command learned a ``--trace-source=<file>`` option.
+
+* :manual:`ccmake(1)` learned to support vim-like navigation bindings.
+
+* :manual:`cmake-gui(1)` gained a button to open the generated project file
+  for :ref:`Visual Studio Generators` and the :generator:`Xcode` generator.
+
+Deprecated and Removed Features
+===============================
+
+* We no longer provide Linux i386 binaries for download from ``cmake.org``
+  for new versions of CMake.
+
+* Vim support files ``cmake-indent.vim``, ``cmake-syntax.vim``, and
+  ``cmake-help.vim`` have been removed in favor of the files now provided
+  from the `vim-cmake-syntax`_ project.
+
+* Support for building CMake itself with some compilers was dropped:
+
+  * Visual Studio 7.1 and 2005 -- superseded by VS 2008 and above
+  * MinGW.org mingw32 -- superseded by MSYS2 mingw32 and mingw64
+
+  CMake still supports generating build systems for other projects using
+  these compilers.
+
+Other Changes
+=============
+
+* The Fortran dependency scanner learned to support the syntax of
+  `Fortran Submodules`_.
+
+* Vim support files ``indent/cmake.vim`` and ``syntax/cmake.vim``
+  from the `vim-cmake-syntax`_ project are now distributed with CMake.
+
+.. _`Fortran Submodules`: http://fortranwiki.org/fortran/show/Submodules
+.. _`vim-cmake-syntax`: https://github.com/pboettch/vim-cmake-syntax
diff --git a/share/cmake-3.10/Help/release/3.8.rst b/share/cmake-3.10/Help/release/3.8.rst
new file mode 100644
index 0000000..efb2aa5
--- /dev/null
+++ b/share/cmake-3.10/Help/release/3.8.rst
@@ -0,0 +1,417 @@
+CMake 3.8 Release Notes
+***********************
+
+.. only:: html
+
+  .. contents::
+
+Changes made since CMake 3.7 include the following.
+
+New Features
+============
+
+Languages
+---------
+
+C#
+^^
+
+* CMake learned to support ``CSharp`` (C#) as a first-class language that
+  can be enabled via the :command:`project` and :command:`enable_language`
+  commands.  It is currently supported by the :ref:`Visual Studio Generators`
+  for VS 2010 and above.
+
+  C# assemblies and programs can be added just like common C++ targets using
+  the :command:`add_library` and :command:`add_executable` commands.
+  References between C# targets in the same source tree may be specified by
+  :command:`target_link_libraries` like for C++.  References to system or
+  3rd-party assemblies may be specified by the target properties
+  :prop_tgt:`VS_DOTNET_REFERENCE_<refname>` and
+  :prop_tgt:`VS_DOTNET_REFERENCES`.
+
+* More fine tuning of C# targets may be done using target and source
+  file properties.  Specifically the target properties related to
+  Visual Studio (``VS_*``) are worth a look (for setting toolset
+  versions, root namespaces, assembly icons, ...).
+
+CUDA
+^^^^
+
+* CMake learned to support ``CUDA`` as a first-class language that can be
+  enabled via the :command:`project` and :command:`enable_language` commands.
+
+* ``CUDA`` is currently supported by the :ref:`Makefile Generators`
+  and the :generator:`Ninja` generator on Linux, macOS, and Windows.
+  Support for the Visual Studio IDE is under development but not
+  included in this release.
+
+* The NVIDIA CUDA Toolkit compiler (``nvcc``) is supported.
+
+C & C++
+^^^^^^^
+
+* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
+  now offers meta-features that request compiler modes for specific language
+  standard levels (e.g. ``cxx_std_11``).  See
+  :prop_gbl:`CMAKE_C_KNOWN_FEATURES` and :prop_gbl:`CMAKE_CXX_KNOWN_FEATURES`.
+
+* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
+  is now aware of C++ 17.  No specific features are yet enumerated besides
+  the ``cxx_std_17`` meta-feature.
+
+* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
+  is now aware of the availability of C99 in gcc since version 3.4.
+
+Platforms
+---------
+
+* A new minimal platform file for ``Fuchsia`` was added.
+
+Generators
+----------
+
+* The :generator:`CodeBlocks` extra generator may now be used to
+  generate with :generator:`NMake Makefiles JOM`.
+
+* The :ref:`Visual Studio Generators` for VS 2013 and above learned to
+  support a ``host=x64`` option in the :variable:`CMAKE_GENERATOR_TOOLSET`
+  value (e.g.  via the :manual:`cmake(1)` ``-T`` option) to request use
+  of a VS 64-bit toolchain on 64-bit hosts.
+
+* The :ref:`Visual Studio Generators` learned to treat files passed to
+  :command:`target_link_libraries` whose names end in ``.targets``
+  as MSBuild "targets" files to be imported into generated project files.
+
+Commands
+--------
+
+* The :command:`add_custom_command` and :command:`add_custom_target` commands
+  learned the option ``COMMAND_EXPAND_LISTS`` which causes lists in the
+  ``COMMAND`` argument to be expanded, including lists created by generator
+  expressions.
+
+* The :command:`execute_process` command gained an ``ENCODING`` option to
+  specify on Windows which encoding is used for output from child process.
+
+* The :command:`math(EXPR)` command gained support for unary
+  ``+`` and ``-`` operators.
+
+* The :command:`source_group` command gained ``TREE`` and ``PREFIX``
+  options to add groups following source tree directory structure.
+
+* The :command:`string(TIMESTAMP)` command learned to treat ``%%``
+  as a way to encode plain ``%``.
+
+* The :command:`string(TIMESTAMP)` command will now honor the
+  ``SOURCE_DATE_EPOCH`` environment variable and use its value
+  instead of the current time.
+
+* The :command:`try_compile` command source file signature gained new options
+  to specify the language standard to use in the generated test project.
+
+* The :command:`try_compile` command source file signature now honors
+  language standard variables like :variable:`CMAKE_CXX_STANDARD`.
+  See policy :policy:`CMP0067`.
+
+Variables
+---------
+
+* A :variable:`CMAKE_CODELITE_USE_TARGETS` variable was added to tell the
+  :generator:`CodeLite` extra generator to change the generated project
+  to have target-centric organization.
+  The ``build``, ``rebuild``, and ``clean`` operations within ``CodeLite``
+  then work on a selected target rather than the whole workspace.
+  (Note that the :generator:`Ninja` clean operation on a target
+  includes its dependencies, though.)
+
+* The :variable:`CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS` variable was added to
+  tell the :generator:`Sublime Text 2` extra generator to place specified
+  environment variables in the generated ``.sublime-project``.
+
+* The :variable:`CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE` variable was added
+  to tell the :generator:`Sublime Text 2` extra generator whether to exclude
+  the build tree from the ``.sublime-project`` when it is inside the source
+  tree.
+
+* A :variable:`CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD` variable was
+  added to tell :ref:`Visual Studio Generators` for VS 2010 and above
+  to include the ``PACKAGE`` target in the default build, similar to
+  the existing :variable:`CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD`
+  variable for the ``INSTALL`` target.
+
+Properties
+----------
+
+* A :prop_tgt:`BUILD_RPATH` target property and corresponding
+  :variable:`CMAKE_BUILD_RPATH` variable were added to support custom
+  ``RPATH`` locations to be added to binaries in the build tree.
+
+* The :prop_sf:`COMPILE_FLAGS` source file property learned to support
+  :manual:`generator expressions <cmake-generator-expressions(7)>`.
+
+* The :prop_tgt:`FRAMEWORK` target property may now also be applied to
+  static libraries on Apple targets.  It will result in a proper
+  Framework but with a static library inside.
+
+* :ref:`Imported <Imported Targets>` :ref:`Interface Libraries` learned new
+  :prop_tgt:`IMPORTED_LIBNAME` and :prop_tgt:`IMPORTED_LIBNAME_<CONFIG>`
+  target properties to specify a link library name since interface libraries
+  do not build their own library files.
+
+* A :prop_tgt:`<LANG>_CPPLINT` target property and supporting
+  :variable:`CMAKE_<LANG>_CPPLINT` variable were introduced to tell
+  the :ref:`Makefile Generators` and the :generator:`Ninja` generator to
+  run the ``cpplint`` style checker along with the compiler for ``C`` and
+  ``CXX`` languages.
+
+* A :prop_tgt:`MANUALLY_ADDED_DEPENDENCIES` target property has been added.
+  It provides a read-only list of dependencies that have been added with
+  the :command:`add_dependencies` command.
+
+* The :prop_tgt:`MAP_IMPORTED_CONFIG_<CONFIG>` target property learned
+  to interpret empty list elements as referring to the configuration-less
+  imported location specified by :prop_tgt:`IMPORTED_LOCATION`.
+
+* The :prop_tgt:`NO_SYSTEM_FROM_IMPORTED` target property is now supported
+  on :ref:`Imported <Imported Targets>` :ref:`Interface Libraries`.
+
+* New source file properties :prop_sf:`SKIP_AUTOMOC`, :prop_sf:`SKIP_AUTOUIC`,
+  :prop_sf:`SKIP_AUTORCC`, and :prop_sf:`SKIP_AUTOGEN` were added to allow
+  source files to be excluded from processing by :prop_tgt:`AUTOMOC`,
+  :prop_tgt:`AUTOUIC`, and :prop_tgt:`AUTORCC` target properties.
+
+* A :prop_sf:`VS_COPY_TO_OUT_DIR` source file property was added to
+  tell :ref:`Visual Studio Generators` for VS 2010 and above whether
+  or not a file should e copied to the output directory.
+
+* A :prop_tgt:`VS_DEBUGGER_WORKING_DIRECTORY` target property was added
+  to tell :ref:`Visual Studio Generators` for VS 2010 and above what
+  debugger working directory should be set for the target.
+
+* A :prop_tgt:`VS_DOTNET_REFERENCES_COPY_LOCAL` target property was added
+  to specify whether to copy referenced assemblies to the output directory.
+
+* A :prop_tgt:`VS_DOTNET_REFERENCE_<refname>` target property was added
+  to tell :ref:`Visual Studio Generators` for VS 2010 and above to add
+  a .NET reference with a given hint path.
+
+* A :prop_sf:`VS_INCLUDE_IN_VSIX` source file property was added to
+  tell :ref:`Visual Studio Generators` for VS 2010 and above whether
+  to include the file in a Visual Studio extension package.
+
+* A :prop_sf:`VS_RESOURCE_GENERATOR` source file property was added to
+  give :ref:`Visual Studio Generators` for VS 2010 and above a setting
+  for the resource generator (``C#`` only).
+
+* A :prop_tgt:`VS_USER_PROPS` target property was added to tell
+  :ref:`Visual Studio Generators` for VS 2010 and above to use a
+  custom MSBuild user ``.props`` file.
+
+* A :prop_gbl:`XCODE_EMIT_EFFECTIVE_PLATFORM_NAME` global property was
+  added to tell the :generator:`Xcode` generator whether to emit the
+  ``EFFECTIVE_PLATFORM_NAME`` variable.  This is useful when building
+  with multiple SDKs like ``macosx`` and ``iphoneos`` in parallel.
+
+* New :prop_tgt:`XCODE_PRODUCT_TYPE` and :prop_tgt:`XCODE_EXPLICIT_FILE_TYPE`
+  target properties were created to tell the :generator:`Xcode` generator
+  to use custom values of the corresponding attributes for a target in the
+  generated Xcode project.
+
+Modules
+-------
+
+* A :module:`CSharpUtilities` module was added to aid parameterization of
+  Visual Studio C# targets.  It provides functions to allow automated
+  setting of source file properties to support Windows Forms, WPF/XAML or
+  other technologies as needed.
+
+* The :module:`ExternalData` module learned to support multiple
+  content links for one data file using different hashes, e.g.
+  ``img.png.sha256`` and ``img.png.sha1``.  This allows objects
+  to be fetched from sources indexed by different hash algorithms.
+
+* The :module:`ExternalProject` module gained the ``GIT_PROGRESS`` option to
+  force Git to show progress when cloning repositories.
+
+* The :module:`ExternalProject` module gained a ``GIT_CONFIG`` option
+  to pass ``--config`` options to Git when cloning repositories.
+
+* The :module:`FeatureSummary` module :command:`feature_summary` command now
+  accepts a new ``QUIET_ON_EMPTY`` option that suppresses the output when
+  the list of packages that belong to the selected category is empty.
+
+* The :module:`FeatureSummary` module :command:`add_feature_info` command
+  now accepts lists of dependencies for deciding whether a feature is enabled
+  or not.
+
+* The package types accepted by the :module:`FeatureSummary` module can now
+  be tweaked by changing the :variable:`FeatureSummary_PKG_TYPES`,
+  :variable:`FeatureSummary_REQUIRED_PKG_TYPES` and
+  :variable:`FeatureSummary_DEFAULT_PKG_TYPE` global properties.
+
+* The :module:`FindOpenGL` module now provides imported targets
+  ``OpenGL::GL`` and ``OpenGL::GLU`` when the libraries are found.
+
+* The :module:`UseSWIG` module gained a ``swig_add_library`` command
+  to give more flexibility over the old ``swig_add_module`` command.
+
+* The :module:`UseSWIG` module ``swig_add_source_to_module`` command
+  learned a new ``SWIG_OUTFILE_DIR`` option to control the output
+  file location (``swig -o``).
+
+* The :module:`WriteCompilerDetectionHeader` module gained the
+  ``ALLOW_UNKNOWN_COMPILERS`` and ``ALLOW_UNKNOWN_COMPILER_VERSIONS`` options
+  that allow creation of headers that will work also with unknown or old
+  compilers by simply assuming they do not support any of the requested
+  features.
+
+CTest
+-----
+
+* The :command:`ctest_memcheck` command gained a ``DEFECT_COUNT <var>``
+  option to capture the number of memory defects detected.
+
+* The :command:`ctest_memcheck` command learned to read the location of
+  suppressions files for sanitizers from the
+  :variable:`CTEST_MEMORYCHECK_SUPPRESSIONS_FILE` variable.
+
+* The :command:`ctest_memcheck` command learned to support ``LeakSanitizer``
+  independently from ``AddressSanitizer``.
+
+* The :command:`ctest_update` command ``CDASH_UPLOAD`` signature was taught
+  to honor the ``RETRY_COUNT``, ``RETRY_DELAY``, and ``QUIET`` options.
+
+CPack
+-----
+
+* The :module:`CPackIFWConfigureFile` module was added to define a new
+  :command:`cpack_ifw_configure_file` command to configure file templates
+  prepared in QtIFW/SDK/Creator style.
+
+* The :module:`CPackIFW` module :command:`cpack_ifw_configure_component` and
+  :command:`cpack_ifw_configure_component_group` commands gained a new
+  ``DEFAULT``, ``VIRTUAL``, ``FORCED_INSTALLATION``, ``REQUIRES_ADMIN_RIGHTS``,
+  ``DISPLAY_NAME``, ``UPDATE_TEXT``, ``DESCRIPTION``, ``RELEASE_DATE``,
+  ``AUTO_DEPEND_ON`` and ``TRANSLATIONS`` options to more specific
+  configuration.
+
+* The :module:`CPackIFW` module :command:`cpack_ifw_configure_component`
+  command gained a new ``DEPENDENCIES`` alias for ``DEPENDS`` option.
+
+* The :module:`CPackIFW` module :command:`cpack_ifw_configure_component_group`
+  command gained a new ``DEPENDS`` option. The ``DEPENDENCIES`` alias also
+  added.
+
+* The :module:`CPackIFW` module :command:`cpack_ifw_configure_component` and
+  :command:`cpack_ifw_configure_component_group` commands ``PRIORITY``
+  option now is deprecated and will be removed in a future version of CMake.
+  Please use new ``SORTING_PRIORITY`` option instead.
+
+* The :module:`CPackIFW` module gained new
+  :variable:`CPACK_IFW_PACKAGE_WATERMARK`,
+  :variable:`CPACK_IFW_PACKAGE_BANNER`,
+  :variable:`CPACK_IFW_PACKAGE_BACKGROUND`,
+  :variable:`CPACK_IFW_PACKAGE_WIZARD_STYLE`,
+  :variable:`CPACK_IFW_PACKAGE_WIZARD_DEFAULT_WIDTH`,
+  :variable:`CPACK_IFW_PACKAGE_WIZARD_DEFAULT_HEIGHT`, and
+  :variable:`CPACK_IFW_PACKAGE_TITLE_COLOR`
+  variables to customize a QtIFW installer look.
+
+* The :module:`CPackProductBuild` module gained options to sign packages.
+  See the variables :variable:`CPACK_PRODUCTBUILD_IDENTITY_NAME`,
+  :variable:`CPACK_PRODUCTBUILD_KEYCHAIN_PATH`,
+  :variable:`CPACK_PKGBUILD_IDENTITY_NAME`, and
+  :variable:`CPACK_PKGBUILD_KEYCHAIN_PATH`.
+
+* The :module:`CPackRPM` module learned to omit tags that are not supported by
+  provided ``rpmbuild`` tool. If unsupported tags are set they are ignored
+  and a developer warning is printed out.
+
+* The :module:`CPackRPM` module learned to generate main component package
+  which forces generation of a rpm for defined component without component
+  suffix in filename and package name.
+  See :variable:`CPACK_RPM_MAIN_COMPONENT` variable.
+
+* The :module:`CPackRPM` module learned to generate a single ``debuginfo``
+  package on demand even if components packaging is used.
+  See :variable:`CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE` variable.
+
+* The :module:`CPackRPM` module learned to support
+  multiple directives per file when using
+  :variable:`CPACK_RPM_USER_FILELIST` variable.
+
+Other
+-----
+
+* CMake functionality using cryptographic hashes now supports SHA-3 algorithms.
+
+* A new generator expression ``$<IF:cond,true-value,false-value>`` was added.
+  It resolves to the true-value if the condition is ``1`` and resolves to
+  the false-value if the condition is ``0``.
+
+Deprecated and Removed Features
+===============================
+
+* The :module:`FeatureSummary` module commands :command:`set_package_info`,
+  :command:`set_feature_info`, :command:`print_enabled_features`, and
+  :command:`print_disabled_features` are now deprecated.
+
+* The :module:`UseSWIG` module ``swig_add_module`` command is now
+  deprecated in favor of ``swig_add_library``.
+
+Other Changes
+=============
+
+* If a command specified by the :prop_tgt:`<LANG>_CLANG_TIDY` target property
+  returns non-zero at build time this is now treated as an error instead of
+  silently ignored.
+
+* The :command:`ctest_memcheck` command no longer automatically adds
+  ``leak_check=1`` to the options used by ``AddressSanitizer``. The default
+  behavior of ``AddressSanitizer`` is to run `LeakSanitizer` to check leaks
+  unless ``leak_check=0``.
+
+* The :command:`ctest_memcheck` command was fixed to correctly append extra
+  sanitizer options read from the
+  :variable:`CTEST_MEMORYCHECK_SANITIZER_OPTIONS` variable to the environment
+  variables used internally by the sanitizers.
+
+* The :module:`FeatureSummary` module :command:`set_package_properties`
+  command no longer forces the package type to ``OPTIONAL`` when the type
+  is not explicitly set.
+
+* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
+  is now aware of features supported by Intel C++ compilers versions 12.1
+  through 17.0 on UNIX and Windows platforms.
+
+* Calls to the :module:`FindPkgConfig` module :command:`pkg_check_modules`
+  command following a successful call learned to re-evaluate the cached values
+  for a given prefix after changes to the parameters to the command for that
+  prefix.
+
+* When using :prop_tgt:`AUTOMOC` or :prop_tgt:`AUTOUIC`, generated
+  ``moc_*``, ``*.moc`` and ``ui_*`` are placed in the
+  ``<CMAKE_CURRENT_BINARY_DIR>/<TARGETNAME>_autogen/include`` directory which
+  is automatically added to the target's :prop_tgt:`INCLUDE_DIRECTORIES`.
+  It is therefore not necessary anymore to have
+  :variable:`CMAKE_CURRENT_BINARY_DIR` in the target's
+  :prop_tgt:`INCLUDE_DIRECTORIES`.
+
+* The :generator:`Sublime Text 2` generator no longer runs the native
+  build command (e.g. ``ninja`` or ``make``) with verbose build output
+  enabled.
+
+* The :command:`try_compile` command source file signature now
+  honors the :variable:`CMAKE_WARN_DEPRECATED` variable value
+  in the generated test project.
+
+* The :ref:`Visual Studio Generators` for VS 2010 and above now place
+  per-source file flags after target-wide flags when they are classified
+  as raw flags with no project file setting (``AdditionalOptions``).
+  This behavior is more consistent with the ordering of flags produced
+  by other generators, and allows flags on more-specific properties
+  (per-source) to override those on more general ones (per-target).
+
+* The precompiled Windows binary MSI package provided on ``cmake.org`` now
+  records the installation directory in the Windows Registry under the key
+  ``HKLM\Software\Kitware\CMake`` with a value named ``InstallDir``.
diff --git a/share/cmake-3.10/Help/release/3.9.rst b/share/cmake-3.10/Help/release/3.9.rst
new file mode 100644
index 0000000..897e268
--- /dev/null
+++ b/share/cmake-3.10/Help/release/3.9.rst
@@ -0,0 +1,342 @@
+CMake 3.9 Release Notes
+***********************
+
+.. only:: html
+
+  .. contents::
+
+Changes made since CMake 3.8 include the following.
+
+New Features
+============
+
+Languages
+---------
+
+* ``CUDA`` is now supported by the :ref:`Visual Studio Generators`
+  for VS 2010 and above.  This complements the existing support by the
+  :ref:`Makefile Generators` and the :generator:`Ninja` generator.
+  CUDA 8.0.61 or higher is recommended due to known bugs in the VS
+  integration by earlier versions.
+
+* CMake is now aware of the :prop_tgt:`C++ standards <CXX_STANDARD>` and
+  :prop_tgt:`C standards <C_STANDARD>` and their associated meta-features for
+  the following :variable:`compiler ids <CMAKE_<LANG>_COMPILER_ID>`: ``Cray``,
+  ``PGI``, and ``XL``.
+
+Generators
+----------
+
+* :ref:`Visual Studio Generators` for VS 2010 and above learned to support
+  the ``ASM_NASM`` language when ``nasm`` is installed.
+
+* The :generator:`Xcode` generator learned to create Xcode schema files.
+  This is an experimental feature and can be activated by setting the
+  :variable:`CMAKE_XCODE_GENERATE_SCHEME` variable to a ``TRUE`` value.
+
+Commands
+--------
+
+* The :command:`add_library` command ``IMPORTED`` option learned to support
+  :ref:`Object Libraries`.
+
+* The :command:`find_library` command learned to search ``libx32`` paths
+  when the build targets the ``x32`` ABI.  See the
+  :prop_gbl:`FIND_LIBRARY_USE_LIBX32_PATHS` global property.
+
+* The :command:`include_external_msproject` command learned to use
+  the :prop_tgt:`MAP_IMPORTED_CONFIG_<CONFIG>` target property
+  to map current configurations to the external configurations.
+
+* The :command:`install(TARGETS)` command learned a new ``OBJECTS`` option to
+  specify where to install :ref:`Object Libraries`.
+
+* The :command:`install(EXPORT)` command learned how to export
+  :ref:`Object Libraries`.
+
+* The :command:`project` command learned an optional ``DESCRIPTION``
+  parameter to set the :variable:`PROJECT_DESCRIPTION` variable.
+
+* The :command:`separate_arguments` command gained a ``NATIVE_COMMAND`` mode
+  that performs argument separation depending on the host operating system.
+
+Variables
+---------
+
+* A :variable:`CMAKE_ANDROID_NDK_DEPRECATED_HEADERS` variable was added
+  for use when :ref:`Cross Compiling for Android with the NDK` to request
+  use of the deprecated headers even when unified headers are available.
+  The default is now to use unified headers if available.
+
+* A :variable:`CMAKE_AUTOMOC_DEPEND_FILTERS` variable was introduced to
+  allow :variable:`CMAKE_AUTOMOC` to extract additional dependency file names
+  for ``moc`` from the contents of source files.
+
+* A :variable:`CMAKE_AUTOUIC_SEARCH_PATHS` variable was introduced to
+  allow :variable:`CMAKE_AUTOUIC` to search for ``foo.ui`` in more
+  places than the vicinity of the file including ``ui_foo.h``.
+
+* A :variable:`CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX` variable was added to
+  tell the :command:`find_library` command to search in a ``lib<suffix>``
+  directory before each ``lib`` directory that would normally be searched.
+
+* A :variable:`CMAKE_INTERPROCEDURAL_OPTIMIZATION` variable was added to
+  initialize the :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` property on all
+  targets.
+
+* A :variable:`CMAKE_<LANG>_COMPILER_AR` variable was added to hold
+  the path to the GCC/Clang wrapper of ``ar``.
+
+* A :variable:`CMAKE_<LANG>_COMPILER_RANLIB` variable was added to hold
+  the path to the GCC/Clang wrapper of ``ranlib``.
+
+* The :variable:`CMAKE_SYSROOT_COMPILE` and :variable:`CMAKE_SYSROOT_LINK`
+  variables were added to use separate sysroots for compiling and linking.
+
+Properties
+----------
+
+* A new :prop_tgt:`AUTOGEN_BUILD_DIR` target property was introduced to set
+  a custom output directory for :prop_tgt:`AUTOMOC`, :prop_tgt:`AUTOUIC`,
+  and :prop_tgt:`AUTORCC`.
+
+* A new :prop_tgt:`AUTOMOC_DEPEND_FILTERS` target property was introduced to
+  allow :prop_tgt:`AUTOMOC` to extract additional dependency file names
+  for ``moc`` from the contents of source files.
+
+* A new :prop_tgt:`AUTOUIC_SEARCH_PATHS` target property was introduced to
+  allow :prop_tgt:`AUTOUIC` to search for ``foo.ui`` in more
+  places than the vicinity of the file including ``ui_foo.h``.
+
+* Global properties :prop_gbl:`AUTOGEN_SOURCE_GROUP`,
+  :prop_gbl:`AUTOMOC_SOURCE_GROUP` and
+  :prop_gbl:`AUTORCC_SOURCE_GROUP` were
+  introduced to allow files generated by :prop_tgt:`AUTOMOC` or
+  :prop_tgt:`AUTORCC` to be placed in a :command:`source_group`.
+
+* A :prop_tgt:`BUILD_WITH_INSTALL_NAME_DIR` target property and corresponding
+  :variable:`CMAKE_BUILD_WITH_INSTALL_NAME_DIR` variable were added to
+  control whether to use the :prop_tgt:`INSTALL_NAME_DIR` target property
+  value for binaries in the build tree.  This is for macOS ``install_name``
+  as :prop_tgt:`BUILD_WITH_INSTALL_RPATH` is for ``RPATH``.
+
+* A :prop_tgt:`CUDA_PTX_COMPILATION` target property was added to
+  :ref:`Object Libraries` to support compiling to ``.ptx`` files
+  instead of host object files.
+
+* A :prop_gbl:`GENERATOR_IS_MULTI_CONFIG` global property was
+  added to determine whether the current generator is a multi-configuration
+  generator (such as :ref:`Visual Studio Generators` or :generator:`Xcode`).
+
+* The :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` target property is now enforced
+  when enabled.  CMake will add IPO flags unconditionally or produce an error
+  if it does not know the flags for the current compiler.  The project is now
+  responsible to use the :module:`CheckIPOSupported` module to check for IPO
+  support before enabling the target property.  See policy :policy:`CMP0069`.
+
+* The :prop_tgt:`WINDOWS_EXPORT_ALL_SYMBOLS` target property may now
+  be used in combination with explicit ``.def`` files in order to
+  export all symbols from the object files within a target plus
+  an explicit list of symbols that the linker finds in dependencies
+  (e.g. ``msvcrt.lib``).
+
+Modules
+-------
+
+* A :module:`CheckIPOSupported` module was added to help projects
+  check whether interprocedural optimization (IPO) is supported by
+  the current toolchain and CMake version.
+
+* The :module:`CMakeFindDependencyMacro` module ``find_dependency`` macro
+  now forwards all arguments to the underlying :command:`find_package`
+  call.  Existing uses will continue to function as before, but callers can
+  now access the full suite of arguments that ``find_package`` accepts.
+
+* The :module:`FeatureSummary` module :command:`feature_summary` command now
+  accepts the new ``DEFAULT_DESCRIPTION`` option that will print the default
+  title for the selected package type.
+
+* The :module:`FeatureSummary` module gained a new
+  :variable:`FeatureSummary_<TYPE>_DESCRIPTION` variable that 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 by the module.
+
+* The :module:`FindDoxygen` module learned to control Doxygen behavior using
+  CMake variables and generate documentation via the newly added
+  :command:`doxygen_add_docs` function. The Doxygen input file (``Doxyfile``)
+  is automatically generated and doxygen is run as part of a custom target.
+  Additional components can be specified to find optional tools: ``dot``,
+  ``mscgen`` and ``dia``.
+
+* The :module:`FindMPI` module now provides imported targets.
+
+* The :module:`FindProtobuf` module :command:`protobuf_generate_cpp`
+  command gained an ``EXPORT_MACRO`` option to specify the name of
+  a DLL export markup macro.
+
+* The :module:`FindProtobuf` module now supports usage of static libraries
+  for Unix via a new ``Protobuf_USE_STATIC_LIBS`` input variable.
+
+* The :module:`FindProtobuf` module now provides imported targets
+  when the libraries are found.
+
+* A new :module:`GoogleTest` module was added to provide the
+  :command:`gtest_add_tests` function independently of the :module:`FindGTest`
+  module. The function was also updated to support keyword arguments, with
+  functionality expanded to allow a test name prefix and suffix to be
+  specified, the dependency on the source files to be optional and the list of
+  discovered test cases to be returned to the caller.
+
+CTest
+-----
+
+* The :command:`ctest_submit` command gained a ``HTTPHEADER`` option
+  to specify custom headers to send during submission.
+
+* The :manual:`ctest(1)` executable gained new options which allow the
+  developer to disable automatically adding tests to the test set to satisfy
+  fixture dependencies. ``-FS`` prevents adding setup tests for fixtures
+  matching the provided regular expression, ``-FC`` prevents adding cleanup
+  tests for matching fixtures and ``-FA`` prevents adding any test for matching
+  fixtures.
+
+* A :prop_test:`DISABLED` test property was added to mark tests that
+  are configured but explicitly disabled so they do not run.
+
+CPack
+-----
+
+* The :module:`CPackArchive` module learned to modify the filename
+  per-component.  See the :variable:`CPACK_ARCHIVE_FILE_NAME` variable and
+  its per-component version :variable:`CPACK_ARCHIVE_<component>_FILE_NAME`.
+
+* The :module:`CPackComponent` module :command:`cpack_add_component` command
+  gained a new ``PLIST <filename>`` option to specify the ``pkgbuild``
+  ``--component-plist`` argument when using the
+  :module:`productbuild <CPackProductBuild>` generator.
+
+* The :module:`CPackIFW` module :command:`cpack_ifw_configure_component` and
+  :command:`cpack_ifw_configure_component_group` commands gained
+  internationalization support for ``DISPLAY_NAME`` and ``DESCRIPTION``
+  options.
+
+* The :module:`CPackIFW` module learned the new hint :variable:`CPACK_IFW_ROOT`
+  variable for finding the QtIFW tool suite installed in a non-standard place.
+
+* The :module:`CPackProductBuild` module gained a new
+  :variable:`CPACK_PRODUCTBUILD_RESOURCES_DIR` variable to
+  specify resources to be copied into the ``Resources``
+  directory.
+
+* The :module:`CPackRPM` module learned to modify the ``debuginfo`` package
+  name.  See the :variable:`CPACK_RPM_DEBUGINFO_FILE_NAME` variable.
+
+* The :module:`CPackWIX` module patching system now has the ability to set
+  additional attributes.  This can be done by specifying attributes with
+  the ``CPackWiXFragment`` XML tag after the ``Id`` attribute.
+  See the :variable:`CPACK_WIX_PATCH_FILE` variable.
+
+* The CPack WIX generator implemented a new
+  :variable:`CPACK_WIX_ROOT_FOLDER_ID` variable which allows
+  using a custom root folder ID instead of the default
+  ``ProgramFilesFolder`` / ``ProgramFiles64Folder``.
+
+Other
+-----
+
+* Interprocedural optimization (IPO) is now supported for GNU and Clang
+  compilers using link time optimization (LTO) flags.  See the
+  :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` target property and
+  :module:`CheckIPOSupported` module.
+
+* The ``TARGET_OBJECTS``
+  :manual:`generator expression <cmake-generator-expressions(7)>`
+  is now supported by the :command:`add_custom_command` and
+  :command:`file(GENERATE)` commands.
+
+* Two new informational generator expressions to retrieve Apple Bundle
+  directories have been added. The first one ``$<TARGET_BUNDLE_DIR:tgt>``
+  outputs the full path to the Bundle directory, the other one
+  ``$<TARGET_BUNDLE_CONTENT_DIR:tgt>`` outputs the full path to the
+  ``Contents`` directory of macOS Bundles and App Bundles. For all other
+  bundle types and SDKs it is identical with ``$<TARGET_BUNDLE_DIR:tgt>``.
+  The new expressions are helpful to query Bundle locations independent of
+  the different Bundle types and layouts on macOS and iOS.
+
+Deprecated and Removed Features
+===============================
+
+* An explicit deprecation diagnostic was added for policies ``CMP0036``
+  and below.  The :manual:`cmake-policies(7)` manual explains that the
+  OLD behaviors of all policies are deprecated and that projects should
+  always port to the NEW behaviors as soon as possible.
+
+* The :generator:`Visual Studio 8 2005` generator is now deprecated
+  and will be removed in a future version of CMake.
+
+* The :generator:`Visual Studio 7 .NET 2003` generator has been removed.
+
+* The :generator:`Xcode` generator dropped support for Xcode versions
+  older than 3.
+
+* The :module:`FindDoxygen` module has deprecated several variables.
+
+* The version of curl bundled with CMake no longer accepts URLs of the form
+  ``file://c:/...`` on Windows due to a change in upstream curl 7.52.  Use
+  the form ``file:///c:/...`` instead to work on all versions.
+
+Other Changes
+=============
+
+* When using :prop_tgt:`AUTOMOC`, CMake now scans for the presence of the
+  ``Q_PLUGIN_METADATA`` macro and reruns moc when the file from the
+  macro's ``FILE`` argument changes.
+
+* When :prop_tgt:`AUTOMOC` detects an include statement of the form
+  ``#include "moc_<basename>.cpp"`` the search for the respective header file
+  now looks in the :prop_tgt:`INCLUDE_DIRECTORIES` of the target as well.
+
+* When running tests, CTest learned to treat skipped tests (using the
+  :prop_test:`SKIP_RETURN_CODE` property) the same as tests with the new
+  :prop_test:`DISABLED` property. Due to this change, CTest will not indicate
+  failure when all tests are either skipped or pass.
+
+* The :generator:`Ninja` generator has loosened the dependencies of object
+  compilation.  Object compilation now depends only on custom targets
+  and custom commands associated with libraries on which the object's target
+  depends and no longer depends on the libraries themselves.  Source files
+  in dependent targets may now compile without waiting for their targets'
+  dependencies to link.
+
+* On macOS, ``RPATH`` settings such as :prop_tgt:`BUILD_WITH_INSTALL_RPATH`
+  no longer affect the ``install_name`` field.  See policy :policy:`CMP0068`.
+
+* The :generator:`Visual Studio 14 2015` generator has been taught about
+  a change to the ``v140`` toolset made by a VS 2015 update.  VS changed
+  the set of values it understands for the ``GenerateDebugInformation``
+  linker setting that produces the ``-DEBUG`` linker flag variants.
+
+Updates
+=======
+
+Changes made since CMake 3.9.0 include the following.
+
+3.9.1
+-----
+
+* The ``find_`` command ``PACKAGE_ROOT`` search path group added by
+  CMake 3.9.0 has been removed for the 3.9 series due to regressions
+  caused by new use of ``<PackageName>_ROOT`` variables.  The behavior
+  may be re-introduced in the future in a more-compatible way.
+
+3.9.2
+-----
+
+* On macOS, the default application bundle ``Info.plist`` file no longer
+  enables Hi-DPI support as it did in 3.9.0 and 3.9.1.  The change had
+  to be reverted because it broke iOS applications.
+
+* The Xcode generator no longer adds "outputPaths" to custom script
+  build phases as it did in 3.9.0 and 3.9.1.  This was added in an
+  attempt to support Xcode 9's new build system, but broke incremental
+  rebuilds for both the old and new Xcode build systems.
diff --git a/share/cmake-3.6/Help/release/dev.txt b/share/cmake-3.10/Help/release/dev.txt
similarity index 100%
rename from share/cmake-3.6/Help/release/dev.txt
rename to share/cmake-3.10/Help/release/dev.txt
diff --git a/share/cmake-3.10/Help/release/index.rst b/share/cmake-3.10/Help/release/index.rst
new file mode 100644
index 0000000..0c7572f
--- /dev/null
+++ b/share/cmake-3.10/Help/release/index.rst
@@ -0,0 +1,26 @@
+: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.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.10/Help/variable/ANDROID.rst b/share/cmake-3.10/Help/variable/ANDROID.rst
new file mode 100644
index 0000000..fede4ca
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/ANDROID.rst
@@ -0,0 +1,5 @@
+ANDROID
+-------
+
+Set to ``1`` when the target system (:variable:`CMAKE_SYSTEM_NAME`) is
+``Android``.
diff --git a/share/cmake-3.10/Help/variable/APPLE.rst b/share/cmake-3.10/Help/variable/APPLE.rst
new file mode 100644
index 0000000..810d5fc
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/APPLE.rst
@@ -0,0 +1,5 @@
+APPLE
+-----
+
+Set to ``True`` when the target system is an Apple platform
+(macOS, iOS, tvOS or watchOS).
diff --git a/share/cmake-3.6/Help/variable/BORLAND.rst b/share/cmake-3.10/Help/variable/BORLAND.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/BORLAND.rst
rename to share/cmake-3.10/Help/variable/BORLAND.rst
diff --git a/share/cmake-3.6/Help/variable/BUILD_SHARED_LIBS.rst b/share/cmake-3.10/Help/variable/BUILD_SHARED_LIBS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/BUILD_SHARED_LIBS.rst
rename to share/cmake-3.10/Help/variable/BUILD_SHARED_LIBS.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_ABSOLUTE_DESTINATION_FILES.rst b/share/cmake-3.10/Help/variable/CMAKE_ABSOLUTE_DESTINATION_FILES.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ABSOLUTE_DESTINATION_FILES.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ABSOLUTE_DESTINATION_FILES.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS.rst b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_ANDROID_API.rst b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_API.rst
new file mode 100644
index 0000000..c07a05a
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_API.rst
@@ -0,0 +1,11 @@
+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.6/Help/variable/CMAKE_ANDROID_API_MIN.rst b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_API_MIN.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ANDROID_API_MIN.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ANDROID_API_MIN.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_ANDROID_ARCH.rst b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_ARCH.rst
new file mode 100644
index 0000000..b91ca57
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_ARCH.rst
@@ -0,0 +1,19 @@
+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.10/Help/variable/CMAKE_ANDROID_ARCH_ABI.rst b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_ARCH_ABI.rst
new file mode 100644
index 0000000..0a3ed3c
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_ARCH_ABI.rst
@@ -0,0 +1,17 @@
+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.10/Help/variable/CMAKE_ANDROID_ARM_MODE.rst b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_ARM_MODE.rst
new file mode 100644
index 0000000..ad3c37c
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_ARM_MODE.rst
@@ -0,0 +1,7 @@
+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.10/Help/variable/CMAKE_ANDROID_ARM_NEON.rst b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_ARM_NEON.rst
new file mode 100644
index 0000000..4b7ae03
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_ARM_NEON.rst
@@ -0,0 +1,6 @@
+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.6/Help/variable/CMAKE_ANDROID_ASSETS_DIRECTORIES.rst b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_ASSETS_DIRECTORIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ANDROID_ASSETS_DIRECTORIES.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ANDROID_ASSETS_DIRECTORIES.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_ANDROID_GUI.rst b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_GUI.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ANDROID_GUI.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ANDROID_GUI.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_ANDROID_JAR_DEPENDENCIES.rst b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_JAR_DEPENDENCIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ANDROID_JAR_DEPENDENCIES.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ANDROID_JAR_DEPENDENCIES.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_ANDROID_JAR_DIRECTORIES.rst b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_JAR_DIRECTORIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ANDROID_JAR_DIRECTORIES.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ANDROID_JAR_DIRECTORIES.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_ANDROID_JAVA_SOURCE_DIR.rst b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_JAVA_SOURCE_DIR.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ANDROID_JAVA_SOURCE_DIR.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ANDROID_JAVA_SOURCE_DIR.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES.rst b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES.rst b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_ANDROID_NDK.rst b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_NDK.rst
new file mode 100644
index 0000000..d241dd0
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_NDK.rst
@@ -0,0 +1,7 @@
+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.10/Help/variable/CMAKE_ANDROID_NDK_DEPRECATED_HEADERS.rst b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_NDK_DEPRECATED_HEADERS.rst
new file mode 100644
index 0000000..8ea1257
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_NDK_DEPRECATED_HEADERS.rst
@@ -0,0 +1,9 @@
+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.10/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG.rst b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG.rst
new file mode 100644
index 0000000..207019a
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG.rst
@@ -0,0 +1,6 @@
+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.10/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION.rst b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION.rst
new file mode 100644
index 0000000..5ae55d1
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION.rst
@@ -0,0 +1,16 @@
+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.  The 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.6/Help/variable/CMAKE_ANDROID_PROCESS_MAX.rst b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_PROCESS_MAX.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ANDROID_PROCESS_MAX.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ANDROID_PROCESS_MAX.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_ANDROID_PROGUARD.rst b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_PROGUARD.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ANDROID_PROGUARD.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ANDROID_PROGUARD.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_ANDROID_PROGUARD_CONFIG_PATH.rst b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_PROGUARD_CONFIG_PATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ANDROID_PROGUARD_CONFIG_PATH.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ANDROID_PROGUARD_CONFIG_PATH.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_ANDROID_SECURE_PROPS_PATH.rst b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_SECURE_PROPS_PATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ANDROID_SECURE_PROPS_PATH.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ANDROID_SECURE_PROPS_PATH.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_ANDROID_SKIP_ANT_STEP.rst b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_SKIP_ANT_STEP.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ANDROID_SKIP_ANT_STEP.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ANDROID_SKIP_ANT_STEP.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_ANDROID_STANDALONE_TOOLCHAIN.rst b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_STANDALONE_TOOLCHAIN.rst
new file mode 100644
index 0000000..ea62cab
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_STANDALONE_TOOLCHAIN.rst
@@ -0,0 +1,6 @@
+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.10/Help/variable/CMAKE_ANDROID_STL_TYPE.rst b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_STL_TYPE.rst
new file mode 100644
index 0000000..cfb76aa
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_ANDROID_STL_TYPE.rst
@@ -0,0 +1,36 @@
+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``.  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.6/Help/variable/CMAKE_APPBUNDLE_PATH.rst b/share/cmake-3.10/Help/variable/CMAKE_APPBUNDLE_PATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_APPBUNDLE_PATH.rst
rename to share/cmake-3.10/Help/variable/CMAKE_APPBUNDLE_PATH.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_AR.rst b/share/cmake-3.10/Help/variable/CMAKE_AR.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_AR.rst
rename to share/cmake-3.10/Help/variable/CMAKE_AR.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY.rst b/share/cmake-3.10/Help/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY_CONFIG.rst b/share/cmake-3.10/Help/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY_CONFIG.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY_CONFIG.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_ARGC.rst b/share/cmake-3.10/Help/variable/CMAKE_ARGC.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ARGC.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ARGC.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_ARGV0.rst b/share/cmake-3.10/Help/variable/CMAKE_ARGV0.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ARGV0.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ARGV0.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_AUTOMOC.rst b/share/cmake-3.10/Help/variable/CMAKE_AUTOMOC.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_AUTOMOC.rst
rename to share/cmake-3.10/Help/variable/CMAKE_AUTOMOC.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_AUTOMOC_COMPILER_PREDEFINES.rst b/share/cmake-3.10/Help/variable/CMAKE_AUTOMOC_COMPILER_PREDEFINES.rst
new file mode 100644
index 0000000..7e1c53d
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_AUTOMOC_COMPILER_PREDEFINES.rst
@@ -0,0 +1,8 @@
+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.10/Help/variable/CMAKE_AUTOMOC_DEPEND_FILTERS.rst b/share/cmake-3.10/Help/variable/CMAKE_AUTOMOC_DEPEND_FILTERS.rst
new file mode 100644
index 0000000..5c3662d
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_AUTOMOC_DEPEND_FILTERS.rst
@@ -0,0 +1,12 @@
+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.10/Help/variable/CMAKE_AUTOMOC_MACRO_NAMES.rst b/share/cmake-3.10/Help/variable/CMAKE_AUTOMOC_MACRO_NAMES.rst
new file mode 100644
index 0000000..5b79c40
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_AUTOMOC_MACRO_NAMES.rst
@@ -0,0 +1,20 @@
+CMAKE_AUTOMOC_MACRO_NAMES
+----------------------------
+
+A :ref:`;-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.6/Help/variable/CMAKE_AUTOMOC_MOC_OPTIONS.rst b/share/cmake-3.10/Help/variable/CMAKE_AUTOMOC_MOC_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_AUTOMOC_MOC_OPTIONS.rst
rename to share/cmake-3.10/Help/variable/CMAKE_AUTOMOC_MOC_OPTIONS.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_AUTOMOC_RELAXED_MODE.rst b/share/cmake-3.10/Help/variable/CMAKE_AUTOMOC_RELAXED_MODE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_AUTOMOC_RELAXED_MODE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_AUTOMOC_RELAXED_MODE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_AUTORCC.rst b/share/cmake-3.10/Help/variable/CMAKE_AUTORCC.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_AUTORCC.rst
rename to share/cmake-3.10/Help/variable/CMAKE_AUTORCC.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_AUTORCC_OPTIONS.rst b/share/cmake-3.10/Help/variable/CMAKE_AUTORCC_OPTIONS.rst
new file mode 100644
index 0000000..815d39d
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_AUTORCC_OPTIONS.rst
@@ -0,0 +1,16 @@
+CMAKE_AUTORCC_OPTIONS
+---------------------
+
+Additional options for ``rcc`` when using :variable:`CMAKE_AUTORCC`.
+
+This variable is used to initialize the :prop_tgt:`AUTORCC_OPTIONS` property on
+all the targets.  See that target property for additional information.
+
+EXAMPLE
+^^^^^^^
+
+.. code-block:: cmake
+
+  # ...
+  set(CMAKE_AUTORCC_OPTIONS "--compress;9")
+  # ...
diff --git a/share/cmake-3.6/Help/variable/CMAKE_AUTOUIC.rst b/share/cmake-3.10/Help/variable/CMAKE_AUTOUIC.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_AUTOUIC.rst
rename to share/cmake-3.10/Help/variable/CMAKE_AUTOUIC.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_AUTOUIC_OPTIONS.rst b/share/cmake-3.10/Help/variable/CMAKE_AUTOUIC_OPTIONS.rst
new file mode 100644
index 0000000..28fa92f
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_AUTOUIC_OPTIONS.rst
@@ -0,0 +1,16 @@
+CMAKE_AUTOUIC_OPTIONS
+---------------------
+
+Additional options for ``uic`` when using :variable:`CMAKE_AUTOUIC`.
+
+This variable is used to initialize the :prop_tgt:`AUTOUIC_OPTIONS` property on
+all the targets.  See that target property for additional information.
+
+EXAMPLE
+^^^^^^^
+
+.. code-block:: cmake
+
+  # ...
+  set_property(CMAKE_AUTOUIC_OPTIONS "--no-protection")
+  # ...
diff --git a/share/cmake-3.10/Help/variable/CMAKE_AUTOUIC_SEARCH_PATHS.rst b/share/cmake-3.10/Help/variable/CMAKE_AUTOUIC_SEARCH_PATHS.rst
new file mode 100644
index 0000000..aa132bf
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_AUTOUIC_SEARCH_PATHS.rst
@@ -0,0 +1,11 @@
+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.6/Help/variable/CMAKE_BACKWARDS_COMPATIBILITY.rst b/share/cmake-3.10/Help/variable/CMAKE_BACKWARDS_COMPATIBILITY.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_BACKWARDS_COMPATIBILITY.rst
rename to share/cmake-3.10/Help/variable/CMAKE_BACKWARDS_COMPATIBILITY.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_BINARY_DIR.rst b/share/cmake-3.10/Help/variable/CMAKE_BINARY_DIR.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_BINARY_DIR.rst
rename to share/cmake-3.10/Help/variable/CMAKE_BINARY_DIR.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_BUILD_RPATH.rst b/share/cmake-3.10/Help/variable/CMAKE_BUILD_RPATH.rst
new file mode 100644
index 0000000..f20eb41
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_BUILD_RPATH.rst
@@ -0,0 +1,10 @@
+CMAKE_BUILD_RPATH
+-----------------
+
+A :ref:`;-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.6/Help/variable/CMAKE_BUILD_TOOL.rst b/share/cmake-3.10/Help/variable/CMAKE_BUILD_TOOL.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_BUILD_TOOL.rst
rename to share/cmake-3.10/Help/variable/CMAKE_BUILD_TOOL.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_BUILD_TYPE.rst b/share/cmake-3.10/Help/variable/CMAKE_BUILD_TYPE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_BUILD_TYPE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_BUILD_TYPE.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_BUILD_WITH_INSTALL_NAME_DIR.rst b/share/cmake-3.10/Help/variable/CMAKE_BUILD_WITH_INSTALL_NAME_DIR.rst
new file mode 100644
index 0000000..30d5d3b
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_BUILD_WITH_INSTALL_NAME_DIR.rst
@@ -0,0 +1,7 @@
+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.6/Help/variable/CMAKE_BUILD_WITH_INSTALL_RPATH.rst b/share/cmake-3.10/Help/variable/CMAKE_BUILD_WITH_INSTALL_RPATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_BUILD_WITH_INSTALL_RPATH.rst
rename to share/cmake-3.10/Help/variable/CMAKE_BUILD_WITH_INSTALL_RPATH.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_CACHEFILE_DIR.rst b/share/cmake-3.10/Help/variable/CMAKE_CACHEFILE_DIR.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_CACHEFILE_DIR.rst
rename to share/cmake-3.10/Help/variable/CMAKE_CACHEFILE_DIR.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_CACHE_MAJOR_VERSION.rst b/share/cmake-3.10/Help/variable/CMAKE_CACHE_MAJOR_VERSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_CACHE_MAJOR_VERSION.rst
rename to share/cmake-3.10/Help/variable/CMAKE_CACHE_MAJOR_VERSION.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_CACHE_MINOR_VERSION.rst b/share/cmake-3.10/Help/variable/CMAKE_CACHE_MINOR_VERSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_CACHE_MINOR_VERSION.rst
rename to share/cmake-3.10/Help/variable/CMAKE_CACHE_MINOR_VERSION.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_CACHE_PATCH_VERSION.rst b/share/cmake-3.10/Help/variable/CMAKE_CACHE_PATCH_VERSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_CACHE_PATCH_VERSION.rst
rename to share/cmake-3.10/Help/variable/CMAKE_CACHE_PATCH_VERSION.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_CFG_INTDIR.rst b/share/cmake-3.10/Help/variable/CMAKE_CFG_INTDIR.rst
new file mode 100644
index 0000000..c36599a
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_CFG_INTDIR.rst
@@ -0,0 +1,45 @@
+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 8, 9
+  $(Configuration)     = Visual Studio 10
+  $(CONFIGURATION)     = Xcode
+  .                    = Make-based tools
+
+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.10/Help/variable/CMAKE_CL_64.rst b/share/cmake-3.10/Help/variable/CMAKE_CL_64.rst
new file mode 100644
index 0000000..4e80d1f
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_CL_64.rst
@@ -0,0 +1,7 @@
+CMAKE_CL_64
+-----------
+
+Discouraged.  Use :variable:`CMAKE_SIZEOF_VOID_P` instead.
+
+Set to a true value when using a Microsoft Visual Studio ``cl`` compiler that
+*targets* a 64-bit architecture.
diff --git a/share/cmake-3.10/Help/variable/CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES.rst b/share/cmake-3.10/Help/variable/CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES.rst
new file mode 100644
index 0000000..80ffce3
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES.rst
@@ -0,0 +1,7 @@
+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.10/Help/variable/CMAKE_CODELITE_USE_TARGETS.rst b/share/cmake-3.10/Help/variable/CMAKE_CODELITE_USE_TARGETS.rst
new file mode 100644
index 0000000..33cdf6c
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_CODELITE_USE_TARGETS.rst
@@ -0,0 +1,8 @@
+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.6/Help/variable/CMAKE_COLOR_MAKEFILE.rst b/share/cmake-3.10/Help/variable/CMAKE_COLOR_MAKEFILE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_COLOR_MAKEFILE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_COLOR_MAKEFILE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_COMMAND.rst b/share/cmake-3.10/Help/variable/CMAKE_COMMAND.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_COMMAND.rst
rename to share/cmake-3.10/Help/variable/CMAKE_COMMAND.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_COMPILER_2005.rst b/share/cmake-3.10/Help/variable/CMAKE_COMPILER_2005.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_COMPILER_2005.rst
rename to share/cmake-3.10/Help/variable/CMAKE_COMPILER_2005.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_COMPILER_IS_GNUCC.rst b/share/cmake-3.10/Help/variable/CMAKE_COMPILER_IS_GNUCC.rst
new file mode 100644
index 0000000..a40667e
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_COMPILER_IS_GNUCC.rst
@@ -0,0 +1,5 @@
+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.10/Help/variable/CMAKE_COMPILER_IS_GNUCXX.rst b/share/cmake-3.10/Help/variable/CMAKE_COMPILER_IS_GNUCXX.rst
new file mode 100644
index 0000000..f1f5cf7
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_COMPILER_IS_GNUCXX.rst
@@ -0,0 +1,5 @@
+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.10/Help/variable/CMAKE_COMPILER_IS_GNUG77.rst b/share/cmake-3.10/Help/variable/CMAKE_COMPILER_IS_GNUG77.rst
new file mode 100644
index 0000000..3d6dab4
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_COMPILER_IS_GNUG77.rst
@@ -0,0 +1,5 @@
+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.6/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY.rst b/share/cmake-3.10/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY.rst
rename to share/cmake-3.10/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst b/share/cmake-3.10/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst
rename to share/cmake-3.10/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_CONFIGURATION_TYPES.rst b/share/cmake-3.10/Help/variable/CMAKE_CONFIGURATION_TYPES.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_CONFIGURATION_TYPES.rst
rename to share/cmake-3.10/Help/variable/CMAKE_CONFIGURATION_TYPES.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_CONFIG_POSTFIX.rst b/share/cmake-3.10/Help/variable/CMAKE_CONFIG_POSTFIX.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_CONFIG_POSTFIX.rst
rename to share/cmake-3.10/Help/variable/CMAKE_CONFIG_POSTFIX.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_CROSSCOMPILING.rst b/share/cmake-3.10/Help/variable/CMAKE_CROSSCOMPILING.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_CROSSCOMPILING.rst
rename to share/cmake-3.10/Help/variable/CMAKE_CROSSCOMPILING.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_CROSSCOMPILING_EMULATOR.rst b/share/cmake-3.10/Help/variable/CMAKE_CROSSCOMPILING_EMULATOR.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_CROSSCOMPILING_EMULATOR.rst
rename to share/cmake-3.10/Help/variable/CMAKE_CROSSCOMPILING_EMULATOR.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_CTEST_COMMAND.rst b/share/cmake-3.10/Help/variable/CMAKE_CTEST_COMMAND.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_CTEST_COMMAND.rst
rename to share/cmake-3.10/Help/variable/CMAKE_CTEST_COMMAND.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_CUDA_EXTENSIONS.rst b/share/cmake-3.10/Help/variable/CMAKE_CUDA_EXTENSIONS.rst
new file mode 100644
index 0000000..4fe758e
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_CUDA_EXTENSIONS.rst
@@ -0,0 +1,11 @@
+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.10/Help/variable/CMAKE_CUDA_HOST_COMPILER.rst b/share/cmake-3.10/Help/variable/CMAKE_CUDA_HOST_COMPILER.rst
new file mode 100644
index 0000000..72e8e66
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_CUDA_HOST_COMPILER.rst
@@ -0,0 +1,7 @@
+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.
diff --git a/share/cmake-3.10/Help/variable/CMAKE_CUDA_STANDARD.rst b/share/cmake-3.10/Help/variable/CMAKE_CUDA_STANDARD.rst
new file mode 100644
index 0000000..6c23031
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_CUDA_STANDARD.rst
@@ -0,0 +1,11 @@
+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.10/Help/variable/CMAKE_CUDA_STANDARD_REQUIRED.rst b/share/cmake-3.10/Help/variable/CMAKE_CUDA_STANDARD_REQUIRED.rst
new file mode 100644
index 0000000..935d605
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_CUDA_STANDARD_REQUIRED.rst
@@ -0,0 +1,11 @@
+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.10/Help/variable/CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES.rst b/share/cmake-3.10/Help/variable/CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES.rst
new file mode 100644
index 0000000..768f571
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES.rst
@@ -0,0 +1,7 @@
+CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES
+--------------------------------------
+
+When the ``CUDA`` language has been enabled, this provides a
+:ref:`;-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.6/Help/variable/CMAKE_CURRENT_BINARY_DIR.rst b/share/cmake-3.10/Help/variable/CMAKE_CURRENT_BINARY_DIR.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_CURRENT_BINARY_DIR.rst
rename to share/cmake-3.10/Help/variable/CMAKE_CURRENT_BINARY_DIR.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_CURRENT_LIST_DIR.rst b/share/cmake-3.10/Help/variable/CMAKE_CURRENT_LIST_DIR.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_CURRENT_LIST_DIR.rst
rename to share/cmake-3.10/Help/variable/CMAKE_CURRENT_LIST_DIR.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_CURRENT_LIST_FILE.rst b/share/cmake-3.10/Help/variable/CMAKE_CURRENT_LIST_FILE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_CURRENT_LIST_FILE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_CURRENT_LIST_FILE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_CURRENT_LIST_LINE.rst b/share/cmake-3.10/Help/variable/CMAKE_CURRENT_LIST_LINE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_CURRENT_LIST_LINE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_CURRENT_LIST_LINE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_CURRENT_SOURCE_DIR.rst b/share/cmake-3.10/Help/variable/CMAKE_CURRENT_SOURCE_DIR.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_CURRENT_SOURCE_DIR.rst
rename to share/cmake-3.10/Help/variable/CMAKE_CURRENT_SOURCE_DIR.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_CXX_COMPILE_FEATURES.rst b/share/cmake-3.10/Help/variable/CMAKE_CXX_COMPILE_FEATURES.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_CXX_COMPILE_FEATURES.rst
rename to share/cmake-3.10/Help/variable/CMAKE_CXX_COMPILE_FEATURES.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_CXX_EXTENSIONS.rst b/share/cmake-3.10/Help/variable/CMAKE_CXX_EXTENSIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_CXX_EXTENSIONS.rst
rename to share/cmake-3.10/Help/variable/CMAKE_CXX_EXTENSIONS.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_CXX_STANDARD.rst b/share/cmake-3.10/Help/variable/CMAKE_CXX_STANDARD.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_CXX_STANDARD.rst
rename to share/cmake-3.10/Help/variable/CMAKE_CXX_STANDARD.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_CXX_STANDARD_REQUIRED.rst b/share/cmake-3.10/Help/variable/CMAKE_CXX_STANDARD_REQUIRED.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_CXX_STANDARD_REQUIRED.rst
rename to share/cmake-3.10/Help/variable/CMAKE_CXX_STANDARD_REQUIRED.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_C_COMPILE_FEATURES.rst b/share/cmake-3.10/Help/variable/CMAKE_C_COMPILE_FEATURES.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_C_COMPILE_FEATURES.rst
rename to share/cmake-3.10/Help/variable/CMAKE_C_COMPILE_FEATURES.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_C_EXTENSIONS.rst b/share/cmake-3.10/Help/variable/CMAKE_C_EXTENSIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_C_EXTENSIONS.rst
rename to share/cmake-3.10/Help/variable/CMAKE_C_EXTENSIONS.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_C_STANDARD.rst b/share/cmake-3.10/Help/variable/CMAKE_C_STANDARD.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_C_STANDARD.rst
rename to share/cmake-3.10/Help/variable/CMAKE_C_STANDARD.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_C_STANDARD_REQUIRED.rst b/share/cmake-3.10/Help/variable/CMAKE_C_STANDARD_REQUIRED.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_C_STANDARD_REQUIRED.rst
rename to share/cmake-3.10/Help/variable/CMAKE_C_STANDARD_REQUIRED.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_DEBUG_POSTFIX.rst b/share/cmake-3.10/Help/variable/CMAKE_DEBUG_POSTFIX.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_DEBUG_POSTFIX.rst
rename to share/cmake-3.10/Help/variable/CMAKE_DEBUG_POSTFIX.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_DEBUG_TARGET_PROPERTIES.rst b/share/cmake-3.10/Help/variable/CMAKE_DEBUG_TARGET_PROPERTIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_DEBUG_TARGET_PROPERTIES.rst
rename to share/cmake-3.10/Help/variable/CMAKE_DEBUG_TARGET_PROPERTIES.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_DEPENDS_IN_PROJECT_ONLY.rst b/share/cmake-3.10/Help/variable/CMAKE_DEPENDS_IN_PROJECT_ONLY.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_DEPENDS_IN_PROJECT_ONLY.rst
rename to share/cmake-3.10/Help/variable/CMAKE_DEPENDS_IN_PROJECT_ONLY.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_DIRECTORY_LABELS.rst b/share/cmake-3.10/Help/variable/CMAKE_DIRECTORY_LABELS.rst
new file mode 100644
index 0000000..2a6c410
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_DIRECTORY_LABELS.rst
@@ -0,0 +1,6 @@
+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.6/Help/variable/CMAKE_DISABLE_FIND_PACKAGE_PackageName.rst b/share/cmake-3.10/Help/variable/CMAKE_DISABLE_FIND_PACKAGE_PackageName.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_DISABLE_FIND_PACKAGE_PackageName.rst
rename to share/cmake-3.10/Help/variable/CMAKE_DISABLE_FIND_PACKAGE_PackageName.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_DL_LIBS.rst b/share/cmake-3.10/Help/variable/CMAKE_DL_LIBS.rst
new file mode 100644
index 0000000..50d313d
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_DL_LIBS.rst
@@ -0,0 +1,7 @@
+CMAKE_DL_LIBS
+-------------
+
+Name of library containing ``dlopen`` and ``dlclose``.
+
+The name of the library that has ``dlopen`` and ``dlclose`` in it, usually
+``-ldl`` on most UNIX machines.
diff --git a/share/cmake-3.6/Help/variable/CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES.rst b/share/cmake-3.10/Help/variable/CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT.rst b/share/cmake-3.10/Help/variable/CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_ECLIPSE_MAKE_ARGUMENTS.rst b/share/cmake-3.10/Help/variable/CMAKE_ECLIPSE_MAKE_ARGUMENTS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ECLIPSE_MAKE_ARGUMENTS.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ECLIPSE_MAKE_ARGUMENTS.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_ECLIPSE_VERSION.rst b/share/cmake-3.10/Help/variable/CMAKE_ECLIPSE_VERSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ECLIPSE_VERSION.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ECLIPSE_VERSION.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_EDIT_COMMAND.rst b/share/cmake-3.10/Help/variable/CMAKE_EDIT_COMMAND.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_EDIT_COMMAND.rst
rename to share/cmake-3.10/Help/variable/CMAKE_EDIT_COMMAND.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_ENABLE_EXPORTS.rst b/share/cmake-3.10/Help/variable/CMAKE_ENABLE_EXPORTS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ENABLE_EXPORTS.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ENABLE_EXPORTS.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_ERROR_DEPRECATED.rst b/share/cmake-3.10/Help/variable/CMAKE_ERROR_DEPRECATED.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ERROR_DEPRECATED.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ERROR_DEPRECATED.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION.rst b/share/cmake-3.10/Help/variable/CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_EXECUTABLE_SUFFIX.rst b/share/cmake-3.10/Help/variable/CMAKE_EXECUTABLE_SUFFIX.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_EXECUTABLE_SUFFIX.rst
rename to share/cmake-3.10/Help/variable/CMAKE_EXECUTABLE_SUFFIX.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_EXE_LINKER_FLAGS.rst b/share/cmake-3.10/Help/variable/CMAKE_EXE_LINKER_FLAGS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_EXE_LINKER_FLAGS.rst
rename to share/cmake-3.10/Help/variable/CMAKE_EXE_LINKER_FLAGS.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_EXE_LINKER_FLAGS_CONFIG.rst b/share/cmake-3.10/Help/variable/CMAKE_EXE_LINKER_FLAGS_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_EXE_LINKER_FLAGS_CONFIG.rst
rename to share/cmake-3.10/Help/variable/CMAKE_EXE_LINKER_FLAGS_CONFIG.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_EXE_LINKER_FLAGS_CONFIG_INIT.rst b/share/cmake-3.10/Help/variable/CMAKE_EXE_LINKER_FLAGS_CONFIG_INIT.rst
new file mode 100644
index 0000000..592a369
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_EXE_LINKER_FLAGS_CONFIG_INIT.rst
@@ -0,0 +1,10 @@
+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.10/Help/variable/CMAKE_EXE_LINKER_FLAGS_INIT.rst b/share/cmake-3.10/Help/variable/CMAKE_EXE_LINKER_FLAGS_INIT.rst
new file mode 100644
index 0000000..0b8afe4
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_EXE_LINKER_FLAGS_INIT.rst
@@ -0,0 +1,11 @@
+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.6/Help/variable/CMAKE_EXPORT_COMPILE_COMMANDS.rst b/share/cmake-3.10/Help/variable/CMAKE_EXPORT_COMPILE_COMMANDS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_EXPORT_COMPILE_COMMANDS.rst
rename to share/cmake-3.10/Help/variable/CMAKE_EXPORT_COMPILE_COMMANDS.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_EXPORT_NO_PACKAGE_REGISTRY.rst b/share/cmake-3.10/Help/variable/CMAKE_EXPORT_NO_PACKAGE_REGISTRY.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_EXPORT_NO_PACKAGE_REGISTRY.rst
rename to share/cmake-3.10/Help/variable/CMAKE_EXPORT_NO_PACKAGE_REGISTRY.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_EXTRA_GENERATOR.rst b/share/cmake-3.10/Help/variable/CMAKE_EXTRA_GENERATOR.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_EXTRA_GENERATOR.rst
rename to share/cmake-3.10/Help/variable/CMAKE_EXTRA_GENERATOR.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES.rst b/share/cmake-3.10/Help/variable/CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES.rst
rename to share/cmake-3.10/Help/variable/CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_FIND_APPBUNDLE.rst b/share/cmake-3.10/Help/variable/CMAKE_FIND_APPBUNDLE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_FIND_APPBUNDLE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_FIND_APPBUNDLE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_FIND_FRAMEWORK.rst b/share/cmake-3.10/Help/variable/CMAKE_FIND_FRAMEWORK.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_FIND_FRAMEWORK.rst
rename to share/cmake-3.10/Help/variable/CMAKE_FIND_FRAMEWORK.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX.rst b/share/cmake-3.10/Help/variable/CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX.rst
new file mode 100644
index 0000000..ada8955
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX.rst
@@ -0,0 +1,12 @@
+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.6/Help/variable/CMAKE_FIND_LIBRARY_PREFIXES.rst b/share/cmake-3.10/Help/variable/CMAKE_FIND_LIBRARY_PREFIXES.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_FIND_LIBRARY_PREFIXES.rst
rename to share/cmake-3.10/Help/variable/CMAKE_FIND_LIBRARY_PREFIXES.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_FIND_LIBRARY_SUFFIXES.rst b/share/cmake-3.10/Help/variable/CMAKE_FIND_LIBRARY_SUFFIXES.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_FIND_LIBRARY_SUFFIXES.rst
rename to share/cmake-3.10/Help/variable/CMAKE_FIND_LIBRARY_SUFFIXES.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_FIND_NO_INSTALL_PREFIX.rst b/share/cmake-3.10/Help/variable/CMAKE_FIND_NO_INSTALL_PREFIX.rst
new file mode 100644
index 0000000..789dc99
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_FIND_NO_INSTALL_PREFIX.rst
@@ -0,0 +1,19 @@
+CMAKE_FIND_NO_INSTALL_PREFIX
+----------------------------
+
+Exclude the values of the :variable:`CMAKE_INSTALL_PREFIX` and
+:variable:`CMAKE_STAGING_PREFIX` variables from
+:variable:`CMAKE_SYSTEM_PREFIX_PATH`.  CMake adds these project-destination
+prefixes to :variable:`CMAKE_SYSTEM_PREFIX_PATH` by default in order to
+support building a series of dependent packages and installing them into
+a common prefix.  Set ``CMAKE_FIND_NO_INSTALL_PREFIX`` to ``TRUE``
+to suppress this behavior.
+
+The :variable:`CMAKE_SYSTEM_PREFIX_PATH` is initialized on the first call to a
+:command:`project` or :command:`enable_language` command.  Therefore one must
+set ``CMAKE_FIND_NO_INSTALL_PREFIX`` before this in order to take effect.  A
+user may set the variable as a cache entry on the command line to achieve this.
+
+Note that the prefix(es) may still be searched for other reasons, such as being
+the same prefix as the CMake installation, or for being a built-in system
+prefix.
diff --git a/share/cmake-3.6/Help/variable/CMAKE_FIND_PACKAGE_NAME.rst b/share/cmake-3.10/Help/variable/CMAKE_FIND_PACKAGE_NAME.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_FIND_PACKAGE_NAME.rst
rename to share/cmake-3.10/Help/variable/CMAKE_FIND_PACKAGE_NAME.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY.rst b/share/cmake-3.10/Help/variable/CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY.rst
rename to share/cmake-3.10/Help/variable/CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY.rst b/share/cmake-3.10/Help/variable/CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY.rst
rename to share/cmake-3.10/Help/variable/CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_FIND_PACKAGE_SORT_DIRECTION.rst b/share/cmake-3.10/Help/variable/CMAKE_FIND_PACKAGE_SORT_DIRECTION.rst
new file mode 100644
index 0000000..99e4ec1
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_FIND_PACKAGE_SORT_DIRECTION.rst
@@ -0,0 +1,16 @@
+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.10/Help/variable/CMAKE_FIND_PACKAGE_SORT_ORDER.rst b/share/cmake-3.10/Help/variable/CMAKE_FIND_PACKAGE_SORT_ORDER.rst
new file mode 100644
index 0000000..ba5f3a8
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_FIND_PACKAGE_SORT_ORDER.rst
@@ -0,0 +1,36 @@
+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.6/Help/variable/CMAKE_FIND_PACKAGE_WARN_NO_MODULE.rst b/share/cmake-3.10/Help/variable/CMAKE_FIND_PACKAGE_WARN_NO_MODULE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_FIND_PACKAGE_WARN_NO_MODULE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_FIND_PACKAGE_WARN_NO_MODULE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_FIND_ROOT_PATH.rst b/share/cmake-3.10/Help/variable/CMAKE_FIND_ROOT_PATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_FIND_ROOT_PATH.rst
rename to share/cmake-3.10/Help/variable/CMAKE_FIND_ROOT_PATH.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_INCLUDE.rst b/share/cmake-3.10/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_INCLUDE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_INCLUDE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_INCLUDE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_LIBRARY.rst b/share/cmake-3.10/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_LIBRARY.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_LIBRARY.rst
rename to share/cmake-3.10/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_LIBRARY.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_PACKAGE.rst b/share/cmake-3.10/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_PACKAGE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_PACKAGE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_PACKAGE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_PROGRAM.rst b/share/cmake-3.10/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_PROGRAM.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_PROGRAM.rst
rename to share/cmake-3.10/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_PROGRAM.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_XXX.txt b/share/cmake-3.10/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_XXX.txt
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_XXX.txt
rename to share/cmake-3.10/Help/variable/CMAKE_FIND_ROOT_PATH_MODE_XXX.txt
diff --git a/share/cmake-3.6/Help/variable/CMAKE_FRAMEWORK_PATH.rst b/share/cmake-3.10/Help/variable/CMAKE_FRAMEWORK_PATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_FRAMEWORK_PATH.rst
rename to share/cmake-3.10/Help/variable/CMAKE_FRAMEWORK_PATH.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_Fortran_FORMAT.rst b/share/cmake-3.10/Help/variable/CMAKE_Fortran_FORMAT.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_Fortran_FORMAT.rst
rename to share/cmake-3.10/Help/variable/CMAKE_Fortran_FORMAT.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_Fortran_MODDIR_DEFAULT.rst b/share/cmake-3.10/Help/variable/CMAKE_Fortran_MODDIR_DEFAULT.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_Fortran_MODDIR_DEFAULT.rst
rename to share/cmake-3.10/Help/variable/CMAKE_Fortran_MODDIR_DEFAULT.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_Fortran_MODDIR_FLAG.rst b/share/cmake-3.10/Help/variable/CMAKE_Fortran_MODDIR_FLAG.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_Fortran_MODDIR_FLAG.rst
rename to share/cmake-3.10/Help/variable/CMAKE_Fortran_MODDIR_FLAG.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_Fortran_MODOUT_FLAG.rst b/share/cmake-3.10/Help/variable/CMAKE_Fortran_MODOUT_FLAG.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_Fortran_MODOUT_FLAG.rst
rename to share/cmake-3.10/Help/variable/CMAKE_Fortran_MODOUT_FLAG.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_Fortran_MODULE_DIRECTORY.rst b/share/cmake-3.10/Help/variable/CMAKE_Fortran_MODULE_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_Fortran_MODULE_DIRECTORY.rst
rename to share/cmake-3.10/Help/variable/CMAKE_Fortran_MODULE_DIRECTORY.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_GENERATOR.rst b/share/cmake-3.10/Help/variable/CMAKE_GENERATOR.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_GENERATOR.rst
rename to share/cmake-3.10/Help/variable/CMAKE_GENERATOR.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_GENERATOR_PLATFORM.rst b/share/cmake-3.10/Help/variable/CMAKE_GENERATOR_PLATFORM.rst
new file mode 100644
index 0000000..50412ff
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_GENERATOR_PLATFORM.rst
@@ -0,0 +1,28 @@
+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) 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.
+
+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.10/Help/variable/CMAKE_GENERATOR_TOOLSET.rst b/share/cmake-3.10/Help/variable/CMAKE_GENERATOR_TOOLSET.rst
new file mode 100644
index 0000000..11c37d7
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_GENERATOR_TOOLSET.rst
@@ -0,0 +1,50 @@
+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) 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
+
+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>``
+  Specify the CUDA toolkit version to use.  Supported by VS 2010
+  and above with the CUDA toolkit VS integration installed.
+  See the :variable:`CMAKE_VS_PLATFORM_TOOLSET_CUDA` variable.
+
+``host=x64``
+  Request use of the native ``x64`` toolchain on ``x64`` hosts.
+  Supported by VS 2013 and above.
+  See the :variable:`CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE`
+  variable.
diff --git a/share/cmake-3.6/Help/variable/CMAKE_GNUtoMS.rst b/share/cmake-3.10/Help/variable/CMAKE_GNUtoMS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_GNUtoMS.rst
rename to share/cmake-3.10/Help/variable/CMAKE_GNUtoMS.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_HOME_DIRECTORY.rst b/share/cmake-3.10/Help/variable/CMAKE_HOME_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_HOME_DIRECTORY.rst
rename to share/cmake-3.10/Help/variable/CMAKE_HOME_DIRECTORY.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_HOST_APPLE.rst b/share/cmake-3.10/Help/variable/CMAKE_HOST_APPLE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_HOST_APPLE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_HOST_APPLE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_HOST_SOLARIS.rst b/share/cmake-3.10/Help/variable/CMAKE_HOST_SOLARIS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_HOST_SOLARIS.rst
rename to share/cmake-3.10/Help/variable/CMAKE_HOST_SOLARIS.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_HOST_SYSTEM.rst b/share/cmake-3.10/Help/variable/CMAKE_HOST_SYSTEM.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_HOST_SYSTEM.rst
rename to share/cmake-3.10/Help/variable/CMAKE_HOST_SYSTEM.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_HOST_SYSTEM_NAME.rst b/share/cmake-3.10/Help/variable/CMAKE_HOST_SYSTEM_NAME.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_HOST_SYSTEM_NAME.rst
rename to share/cmake-3.10/Help/variable/CMAKE_HOST_SYSTEM_NAME.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_HOST_SYSTEM_PROCESSOR.rst b/share/cmake-3.10/Help/variable/CMAKE_HOST_SYSTEM_PROCESSOR.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_HOST_SYSTEM_PROCESSOR.rst
rename to share/cmake-3.10/Help/variable/CMAKE_HOST_SYSTEM_PROCESSOR.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_HOST_SYSTEM_VERSION.rst b/share/cmake-3.10/Help/variable/CMAKE_HOST_SYSTEM_VERSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_HOST_SYSTEM_VERSION.rst
rename to share/cmake-3.10/Help/variable/CMAKE_HOST_SYSTEM_VERSION.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_HOST_UNIX.rst b/share/cmake-3.10/Help/variable/CMAKE_HOST_UNIX.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_HOST_UNIX.rst
rename to share/cmake-3.10/Help/variable/CMAKE_HOST_UNIX.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_HOST_WIN32.rst b/share/cmake-3.10/Help/variable/CMAKE_HOST_WIN32.rst
new file mode 100644
index 0000000..876b34c
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_HOST_WIN32.rst
@@ -0,0 +1,6 @@
+CMAKE_HOST_WIN32
+----------------
+
+``True`` if the host system is running Windows, including Windows 64-bit and MSYS.
+
+Set to ``false`` on Cygwin.
diff --git a/share/cmake-3.6/Help/variable/CMAKE_IGNORE_PATH.rst b/share/cmake-3.10/Help/variable/CMAKE_IGNORE_PATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_IGNORE_PATH.rst
rename to share/cmake-3.10/Help/variable/CMAKE_IGNORE_PATH.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_IMPORT_LIBRARY_PREFIX.rst b/share/cmake-3.10/Help/variable/CMAKE_IMPORT_LIBRARY_PREFIX.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_IMPORT_LIBRARY_PREFIX.rst
rename to share/cmake-3.10/Help/variable/CMAKE_IMPORT_LIBRARY_PREFIX.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_IMPORT_LIBRARY_SUFFIX.rst b/share/cmake-3.10/Help/variable/CMAKE_IMPORT_LIBRARY_SUFFIX.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_IMPORT_LIBRARY_SUFFIX.rst
rename to share/cmake-3.10/Help/variable/CMAKE_IMPORT_LIBRARY_SUFFIX.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_INCLUDE_CURRENT_DIR.rst b/share/cmake-3.10/Help/variable/CMAKE_INCLUDE_CURRENT_DIR.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_INCLUDE_CURRENT_DIR.rst
rename to share/cmake-3.10/Help/variable/CMAKE_INCLUDE_CURRENT_DIR.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE.rst b/share/cmake-3.10/Help/variable/CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_INCLUDE_DIRECTORIES_BEFORE.rst b/share/cmake-3.10/Help/variable/CMAKE_INCLUDE_DIRECTORIES_BEFORE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_INCLUDE_DIRECTORIES_BEFORE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_INCLUDE_DIRECTORIES_BEFORE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE.rst b/share/cmake-3.10/Help/variable/CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_INCLUDE_PATH.rst b/share/cmake-3.10/Help/variable/CMAKE_INCLUDE_PATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_INCLUDE_PATH.rst
rename to share/cmake-3.10/Help/variable/CMAKE_INCLUDE_PATH.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_INSTALL_DEFAULT_COMPONENT_NAME.rst b/share/cmake-3.10/Help/variable/CMAKE_INSTALL_DEFAULT_COMPONENT_NAME.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_INSTALL_DEFAULT_COMPONENT_NAME.rst
rename to share/cmake-3.10/Help/variable/CMAKE_INSTALL_DEFAULT_COMPONENT_NAME.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_INSTALL_MESSAGE.rst b/share/cmake-3.10/Help/variable/CMAKE_INSTALL_MESSAGE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_INSTALL_MESSAGE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_INSTALL_MESSAGE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_INSTALL_NAME_DIR.rst b/share/cmake-3.10/Help/variable/CMAKE_INSTALL_NAME_DIR.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_INSTALL_NAME_DIR.rst
rename to share/cmake-3.10/Help/variable/CMAKE_INSTALL_NAME_DIR.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_INSTALL_PREFIX.rst b/share/cmake-3.10/Help/variable/CMAKE_INSTALL_PREFIX.rst
new file mode 100644
index 0000000..7bd87d6
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_INSTALL_PREFIX.rst
@@ -0,0 +1,37 @@
+CMAKE_INSTALL_PREFIX
+--------------------
+
+Install directory used by :command:`install`.
+
+If ``make install`` is invoked or ``INSTALL`` is built, this directory is
+prepended onto all install directories.  This variable defaults to
+``/usr/local`` on UNIX and ``c:/Program Files/${PROJECT_NAME}`` on Windows.
+See :variable:`CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT` for how a
+project might choose its own default.
+
+On UNIX one can use the ``DESTDIR`` mechanism in order to relocate the
+whole installation.  ``DESTDIR`` means DESTination DIRectory.  It is
+commonly used by makefile users in order to install software at
+non-default location.  It is usually invoked like this:
+
+::
+
+ make DESTDIR=/home/john install
+
+which will install the concerned software using the installation
+prefix, e.g.  ``/usr/local`` prepended with the ``DESTDIR`` value which
+finally gives ``/home/john/usr/local``.
+
+WARNING: ``DESTDIR`` may not be used on Windows because installation
+prefix usually contains a drive letter like in ``C:/Program Files``
+which cannot be prepended with some other prefix.
+
+The installation prefix is also added to :variable:`CMAKE_SYSTEM_PREFIX_PATH`
+so that :command:`find_package`, :command:`find_program`,
+:command:`find_library`, :command:`find_path`, and :command:`find_file`
+will search the prefix for other software.
+
+.. note::
+
+  Use the :module:`GNUInstallDirs` module to provide GNU-style
+  options for the layout of directories within the installation.
diff --git a/share/cmake-3.10/Help/variable/CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT.rst b/share/cmake-3.10/Help/variable/CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT.rst
new file mode 100644
index 0000000..2a5842d
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT.rst
@@ -0,0 +1,14 @@
+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.6/Help/variable/CMAKE_INSTALL_RPATH.rst b/share/cmake-3.10/Help/variable/CMAKE_INSTALL_RPATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_INSTALL_RPATH.rst
rename to share/cmake-3.10/Help/variable/CMAKE_INSTALL_RPATH.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_INSTALL_RPATH_USE_LINK_PATH.rst b/share/cmake-3.10/Help/variable/CMAKE_INSTALL_RPATH_USE_LINK_PATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_INSTALL_RPATH_USE_LINK_PATH.rst
rename to share/cmake-3.10/Help/variable/CMAKE_INSTALL_RPATH_USE_LINK_PATH.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_INTERNAL_PLATFORM_ABI.rst b/share/cmake-3.10/Help/variable/CMAKE_INTERNAL_PLATFORM_ABI.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_INTERNAL_PLATFORM_ABI.rst
rename to share/cmake-3.10/Help/variable/CMAKE_INTERNAL_PLATFORM_ABI.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION.rst b/share/cmake-3.10/Help/variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION.rst
new file mode 100644
index 0000000..b0cbb62
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION.rst
@@ -0,0 +1,8 @@
+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.10/Help/variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst b/share/cmake-3.10/Help/variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst
new file mode 100644
index 0000000..b291102
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst
@@ -0,0 +1,8 @@
+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.6/Help/variable/CMAKE_IOS_INSTALL_COMBINED.rst b/share/cmake-3.10/Help/variable/CMAKE_IOS_INSTALL_COMBINED.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_IOS_INSTALL_COMBINED.rst
rename to share/cmake-3.10/Help/variable/CMAKE_IOS_INSTALL_COMBINED.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_JOB_POOL_COMPILE.rst b/share/cmake-3.10/Help/variable/CMAKE_JOB_POOL_COMPILE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_JOB_POOL_COMPILE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_JOB_POOL_COMPILE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_JOB_POOL_LINK.rst b/share/cmake-3.10/Help/variable/CMAKE_JOB_POOL_LINK.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_JOB_POOL_LINK.rst
rename to share/cmake-3.10/Help/variable/CMAKE_JOB_POOL_LINK.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_MACHINE.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_MACHINE.rst
new file mode 100644
index 0000000..d336364
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_MACHINE.rst
@@ -0,0 +1,9 @@
+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.10/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_PREFIX.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_PREFIX.rst
new file mode 100644
index 0000000..db04af3
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_PREFIX.rst
@@ -0,0 +1,12 @@
+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.10/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_SUFFIX.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_SUFFIX.rst
new file mode 100644
index 0000000..159eb22
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_SUFFIX.rst
@@ -0,0 +1,8 @@
+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.6/Help/variable/CMAKE_LANG_ARCHIVE_APPEND.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_ARCHIVE_APPEND.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_ARCHIVE_APPEND.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_ARCHIVE_APPEND.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_ARCHIVE_CREATE.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_ARCHIVE_CREATE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_ARCHIVE_CREATE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_ARCHIVE_CREATE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_ARCHIVE_FINISH.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_ARCHIVE_FINISH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_ARCHIVE_FINISH.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_ARCHIVE_FINISH.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_CLANG_TIDY.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_CLANG_TIDY.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_CLANG_TIDY.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_CLANG_TIDY.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_COMPILER.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_COMPILER.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_COMPILER_ABI.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_ABI.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_COMPILER_ABI.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_ABI.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_AR.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_AR.rst
new file mode 100644
index 0000000..b83a1d4
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_AR.rst
@@ -0,0 +1,7 @@
+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.10/Help/variable/CMAKE_LANG_COMPILER_ARCHITECTURE_ID.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_ARCHITECTURE_ID.rst
new file mode 100644
index 0000000..054c648
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_ARCHITECTURE_ID.rst
@@ -0,0 +1,8 @@
+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.6/Help/variable/CMAKE_LANG_COMPILER_EXTERNAL_TOOLCHAIN.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_EXTERNAL_TOOLCHAIN.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_COMPILER_EXTERNAL_TOOLCHAIN.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_EXTERNAL_TOOLCHAIN.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_ID.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_ID.rst
new file mode 100644
index 0000000..2264269
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_ID.rst
@@ -0,0 +1,39 @@
+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)
+  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)
+  G95 = G95 Fortran (g95.org)
+  GNU = GNU Compiler Collection (gcc.gnu.org)
+  HP = Hewlett-Packard Compiler (hp.com)
+  IAR = IAR Systems (iar.com)
+  Intel = Intel Compiler (intel.com)
+  MIPSpro = SGI MIPSpro (sgi.com)
+  MSVC = Microsoft Visual Studio (microsoft.com)
+  NVIDIA = NVIDIA CUDA Compiler (nvidia.com)
+  OpenWatcom = Open Watcom (openwatcom.org)
+  PGI = The Portland Group (pgroup.com)
+  Flang = Flang Fortran Compiler
+  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)
+
+This variable is not guaranteed to be defined for all compilers or
+languages.
diff --git a/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst
new file mode 100644
index 0000000..f4e2ba5
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst
@@ -0,0 +1,6 @@
+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``, or ``CUDA``.
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_COMPILER_LOADED.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_LOADED.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_COMPILER_LOADED.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_LOADED.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_PREDEFINES_COMMAND.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_PREDEFINES_COMMAND.rst
new file mode 100644
index 0000000..e050f43
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_PREDEFINES_COMMAND.rst
@@ -0,0 +1,8 @@
+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.10/Help/variable/CMAKE_LANG_COMPILER_RANLIB.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_RANLIB.rst
new file mode 100644
index 0000000..945160b
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_RANLIB.rst
@@ -0,0 +1,7 @@
+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.6/Help/variable/CMAKE_LANG_COMPILER_TARGET.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_TARGET.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_COMPILER_TARGET.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_TARGET.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_VERSION.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_VERSION.rst
new file mode 100644
index 0000000..27b0cad
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_VERSION.rst
@@ -0,0 +1,12 @@
+CMAKE_<LANG>_COMPILER_VERSION
+-----------------------------
+
+Compiler version string.
+
+Compiler version in major[.minor[.patch[.tweak]]] format.  This
+variable is not guaranteed to be defined for all compilers or
+languages.
+
+For example ``CMAKE_C_COMPILER_VERSION`` and
+``CMAKE_CXX_COMPILER_VERSION`` might indicate the respective C and C++
+compiler version.
diff --git a/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_VERSION_INTERNAL.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_VERSION_INTERNAL.rst
new file mode 100644
index 0000000..c3cd980
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILER_VERSION_INTERNAL.rst
@@ -0,0 +1,8 @@
+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.6/Help/variable/CMAKE_LANG_COMPILE_OBJECT.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILE_OBJECT.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_COMPILE_OBJECT.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_COMPILE_OBJECT.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_LANG_CPPCHECK.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_CPPCHECK.rst
new file mode 100644
index 0000000..50b478f
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_LANG_CPPCHECK.rst
@@ -0,0 +1,6 @@
+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.10/Help/variable/CMAKE_LANG_CPPLINT.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_CPPLINT.rst
new file mode 100644
index 0000000..3b6f452
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_LANG_CPPLINT.rst
@@ -0,0 +1,6 @@
+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.6/Help/variable/CMAKE_LANG_CREATE_SHARED_LIBRARY.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_CREATE_SHARED_LIBRARY.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_CREATE_SHARED_LIBRARY.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_CREATE_SHARED_LIBRARY.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_CREATE_SHARED_MODULE.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_CREATE_SHARED_MODULE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_CREATE_SHARED_MODULE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_CREATE_SHARED_MODULE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_CREATE_STATIC_LIBRARY.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_CREATE_STATIC_LIBRARY.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_CREATE_STATIC_LIBRARY.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_CREATE_STATIC_LIBRARY.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_FLAGS.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_FLAGS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_FLAGS.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_FLAGS.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_FLAGS_DEBUG.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_FLAGS_DEBUG.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_FLAGS_DEBUG.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_FLAGS_DEBUG.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_LANG_FLAGS_DEBUG_INIT.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_FLAGS_DEBUG_INIT.rst
new file mode 100644
index 0000000..dcddb2e
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_LANG_FLAGS_DEBUG_INIT.rst
@@ -0,0 +1,10 @@
+CMAKE_<LANG>_FLAGS_DEBUG_INIT
+-----------------------------
+
+Value used to initialize the :variable:`CMAKE_<LANG>_FLAGS_DEBUG` 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.10/Help/variable/CMAKE_LANG_FLAGS_INIT.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_FLAGS_INIT.rst
new file mode 100644
index 0000000..1d32cc3
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_LANG_FLAGS_INIT.rst
@@ -0,0 +1,15 @@
+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.
+
+See also the configuration-specific variables:
+
+* :variable:`CMAKE_<LANG>_FLAGS_DEBUG_INIT`
+* :variable:`CMAKE_<LANG>_FLAGS_RELEASE_INIT`
+* :variable:`CMAKE_<LANG>_FLAGS_MINSIZEREL_INIT`
+* :variable:`CMAKE_<LANG>_FLAGS_RELWITHDEBINFO_INIT`
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_FLAGS_MINSIZEREL.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_FLAGS_MINSIZEREL.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_FLAGS_MINSIZEREL.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_FLAGS_MINSIZEREL.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_LANG_FLAGS_MINSIZEREL_INIT.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_FLAGS_MINSIZEREL_INIT.rst
new file mode 100644
index 0000000..c0aedf4
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_LANG_FLAGS_MINSIZEREL_INIT.rst
@@ -0,0 +1,10 @@
+CMAKE_<LANG>_FLAGS_MINSIZEREL_INIT
+----------------------------------
+
+Value used to initialize the :variable:`CMAKE_<LANG>_FLAGS_MINSIZEREL`
+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.6/Help/variable/CMAKE_LANG_FLAGS_RELEASE.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_FLAGS_RELEASE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_FLAGS_RELEASE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_FLAGS_RELEASE.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_LANG_FLAGS_RELEASE_INIT.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_FLAGS_RELEASE_INIT.rst
new file mode 100644
index 0000000..59f92ff
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_LANG_FLAGS_RELEASE_INIT.rst
@@ -0,0 +1,10 @@
+CMAKE_<LANG>_FLAGS_RELEASE_INIT
+-------------------------------
+
+Value used to initialize the :variable:`CMAKE_<LANG>_FLAGS_RELEASE`
+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.6/Help/variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO_INIT.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO_INIT.rst
new file mode 100644
index 0000000..915f023
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO_INIT.rst
@@ -0,0 +1,10 @@
+CMAKE_<LANG>_FLAGS_RELWITHDEBINFO_INIT
+--------------------------------------
+
+Value used to initialize the :variable:`CMAKE_<LANG>_FLAGS_RELWITHDEBINFO`
+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.6/Help/variable/CMAKE_LANG_GHS_KERNEL_FLAGS_DEBUG.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_GHS_KERNEL_FLAGS_DEBUG.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_GHS_KERNEL_FLAGS_DEBUG.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_GHS_KERNEL_FLAGS_DEBUG.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_GHS_KERNEL_FLAGS_MINSIZEREL.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_GHS_KERNEL_FLAGS_MINSIZEREL.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_GHS_KERNEL_FLAGS_MINSIZEREL.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_GHS_KERNEL_FLAGS_MINSIZEREL.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_GHS_KERNEL_FLAGS_RELEASE.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_GHS_KERNEL_FLAGS_RELEASE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_GHS_KERNEL_FLAGS_RELEASE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_GHS_KERNEL_FLAGS_RELEASE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_GHS_KERNEL_FLAGS_RELWITHDEBINFO.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_GHS_KERNEL_FLAGS_RELWITHDEBINFO.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_GHS_KERNEL_FLAGS_RELWITHDEBINFO.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_GHS_KERNEL_FLAGS_RELWITHDEBINFO.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_IGNORE_EXTENSIONS.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_IGNORE_EXTENSIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_IGNORE_EXTENSIONS.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_IGNORE_EXTENSIONS.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_IMPLICIT_INCLUDE_DIRECTORIES.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_IMPLICIT_INCLUDE_DIRECTORIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_IMPLICIT_INCLUDE_DIRECTORIES.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_IMPLICIT_INCLUDE_DIRECTORIES.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_IMPLICIT_LINK_LIBRARIES.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_IMPLICIT_LINK_LIBRARIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_IMPLICIT_LINK_LIBRARIES.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_IMPLICIT_LINK_LIBRARIES.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_INCLUDE_WHAT_YOU_USE.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_INCLUDE_WHAT_YOU_USE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_INCLUDE_WHAT_YOU_USE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_INCLUDE_WHAT_YOU_USE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_LIBRARY_ARCHITECTURE.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_LIBRARY_ARCHITECTURE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_LIBRARY_ARCHITECTURE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_LIBRARY_ARCHITECTURE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_LINKER_PREFERENCE.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_LINKER_PREFERENCE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_LINKER_PREFERENCE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_LINKER_PREFERENCE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_LINKER_PREFERENCE_PROPAGATES.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_LINKER_PREFERENCE_PROPAGATES.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_LINKER_PREFERENCE_PROPAGATES.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_LINKER_PREFERENCE_PROPAGATES.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_LINK_EXECUTABLE.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_LINK_EXECUTABLE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_LINK_EXECUTABLE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_LINK_EXECUTABLE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_OUTPUT_EXTENSION.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_OUTPUT_EXTENSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_OUTPUT_EXTENSION.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_OUTPUT_EXTENSION.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_PLATFORM_ID.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_PLATFORM_ID.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_PLATFORM_ID.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_PLATFORM_ID.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_SIMULATE_ID.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_SIMULATE_ID.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_SIMULATE_ID.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_SIMULATE_ID.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_SIMULATE_VERSION.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_SIMULATE_VERSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_SIMULATE_VERSION.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_SIMULATE_VERSION.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_SIZEOF_DATA_PTR.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_SIZEOF_DATA_PTR.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_SIZEOF_DATA_PTR.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_SIZEOF_DATA_PTR.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_SOURCE_FILE_EXTENSIONS.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_SOURCE_FILE_EXTENSIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_SOURCE_FILE_EXTENSIONS.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_SOURCE_FILE_EXTENSIONS.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_STANDARD_INCLUDE_DIRECTORIES.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_STANDARD_INCLUDE_DIRECTORIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_STANDARD_INCLUDE_DIRECTORIES.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_STANDARD_INCLUDE_DIRECTORIES.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_STANDARD_LIBRARIES.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_STANDARD_LIBRARIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_STANDARD_LIBRARIES.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_STANDARD_LIBRARIES.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LANG_VISIBILITY_PRESET.rst b/share/cmake-3.10/Help/variable/CMAKE_LANG_VISIBILITY_PRESET.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LANG_VISIBILITY_PRESET.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LANG_VISIBILITY_PRESET.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LIBRARY_ARCHITECTURE.rst b/share/cmake-3.10/Help/variable/CMAKE_LIBRARY_ARCHITECTURE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LIBRARY_ARCHITECTURE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LIBRARY_ARCHITECTURE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LIBRARY_ARCHITECTURE_REGEX.rst b/share/cmake-3.10/Help/variable/CMAKE_LIBRARY_ARCHITECTURE_REGEX.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LIBRARY_ARCHITECTURE_REGEX.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LIBRARY_ARCHITECTURE_REGEX.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY.rst b/share/cmake-3.10/Help/variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY_CONFIG.rst b/share/cmake-3.10/Help/variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY_CONFIG.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY_CONFIG.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LIBRARY_PATH.rst b/share/cmake-3.10/Help/variable/CMAKE_LIBRARY_PATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LIBRARY_PATH.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LIBRARY_PATH.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LIBRARY_PATH_FLAG.rst b/share/cmake-3.10/Help/variable/CMAKE_LIBRARY_PATH_FLAG.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LIBRARY_PATH_FLAG.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LIBRARY_PATH_FLAG.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LINK_DEF_FILE_FLAG.rst b/share/cmake-3.10/Help/variable/CMAKE_LINK_DEF_FILE_FLAG.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LINK_DEF_FILE_FLAG.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LINK_DEF_FILE_FLAG.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LINK_DEPENDS_NO_SHARED.rst b/share/cmake-3.10/Help/variable/CMAKE_LINK_DEPENDS_NO_SHARED.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LINK_DEPENDS_NO_SHARED.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LINK_DEPENDS_NO_SHARED.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LINK_INTERFACE_LIBRARIES.rst b/share/cmake-3.10/Help/variable/CMAKE_LINK_INTERFACE_LIBRARIES.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LINK_INTERFACE_LIBRARIES.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LINK_INTERFACE_LIBRARIES.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LINK_LIBRARY_FILE_FLAG.rst b/share/cmake-3.10/Help/variable/CMAKE_LINK_LIBRARY_FILE_FLAG.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LINK_LIBRARY_FILE_FLAG.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LINK_LIBRARY_FILE_FLAG.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LINK_LIBRARY_FLAG.rst b/share/cmake-3.10/Help/variable/CMAKE_LINK_LIBRARY_FLAG.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LINK_LIBRARY_FLAG.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LINK_LIBRARY_FLAG.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LINK_LIBRARY_SUFFIX.rst b/share/cmake-3.10/Help/variable/CMAKE_LINK_LIBRARY_SUFFIX.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LINK_LIBRARY_SUFFIX.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LINK_LIBRARY_SUFFIX.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LINK_SEARCH_END_STATIC.rst b/share/cmake-3.10/Help/variable/CMAKE_LINK_SEARCH_END_STATIC.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LINK_SEARCH_END_STATIC.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LINK_SEARCH_END_STATIC.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_LINK_SEARCH_START_STATIC.rst b/share/cmake-3.10/Help/variable/CMAKE_LINK_SEARCH_START_STATIC.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_LINK_SEARCH_START_STATIC.rst
rename to share/cmake-3.10/Help/variable/CMAKE_LINK_SEARCH_START_STATIC.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_LINK_WHAT_YOU_USE.rst b/share/cmake-3.10/Help/variable/CMAKE_LINK_WHAT_YOU_USE.rst
new file mode 100644
index 0000000..90c4d3f
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_LINK_WHAT_YOU_USE.rst
@@ -0,0 +1,6 @@
+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.6/Help/variable/CMAKE_MACOSX_BUNDLE.rst b/share/cmake-3.10/Help/variable/CMAKE_MACOSX_BUNDLE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_MACOSX_BUNDLE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_MACOSX_BUNDLE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_MACOSX_RPATH.rst b/share/cmake-3.10/Help/variable/CMAKE_MACOSX_RPATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_MACOSX_RPATH.rst
rename to share/cmake-3.10/Help/variable/CMAKE_MACOSX_RPATH.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_MAJOR_VERSION.rst b/share/cmake-3.10/Help/variable/CMAKE_MAJOR_VERSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_MAJOR_VERSION.rst
rename to share/cmake-3.10/Help/variable/CMAKE_MAJOR_VERSION.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_MAKE_PROGRAM.rst b/share/cmake-3.10/Help/variable/CMAKE_MAKE_PROGRAM.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_MAKE_PROGRAM.rst
rename to share/cmake-3.10/Help/variable/CMAKE_MAKE_PROGRAM.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_MAP_IMPORTED_CONFIG_CONFIG.rst b/share/cmake-3.10/Help/variable/CMAKE_MAP_IMPORTED_CONFIG_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_MAP_IMPORTED_CONFIG_CONFIG.rst
rename to share/cmake-3.10/Help/variable/CMAKE_MAP_IMPORTED_CONFIG_CONFIG.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_MATCH_COUNT.rst b/share/cmake-3.10/Help/variable/CMAKE_MATCH_COUNT.rst
new file mode 100644
index 0000000..355e834
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_MATCH_COUNT.rst
@@ -0,0 +1,9 @@
+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.10/Help/variable/CMAKE_MATCH_n.rst b/share/cmake-3.10/Help/variable/CMAKE_MATCH_n.rst
new file mode 100644
index 0000000..c7dd623
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_MATCH_n.rst
@@ -0,0 +1,10 @@
+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.10/Help/variable/CMAKE_MFC_FLAG.rst b/share/cmake-3.10/Help/variable/CMAKE_MFC_FLAG.rst
new file mode 100644
index 0000000..5a392bf
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_MFC_FLAG.rst
@@ -0,0 +1,16 @@
+CMAKE_MFC_FLAG
+--------------
+
+Tell cmake to use MFC for an executable or dll.
+
+This can be set in a ``CMakeLists.txt`` file and will enable MFC in the
+application.  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.  The CMakeSetup dialog used MFC and the ``CMakeLists.txt``
+looks like this:
+
+::
+
+  add_definitions(-D_AFXDLL)
+  set(CMAKE_MFC_FLAG 2)
+  add_executable(CMakeSetup WIN32 ${SRCS})
diff --git a/share/cmake-3.6/Help/variable/CMAKE_MINIMUM_REQUIRED_VERSION.rst b/share/cmake-3.10/Help/variable/CMAKE_MINIMUM_REQUIRED_VERSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_MINIMUM_REQUIRED_VERSION.rst
rename to share/cmake-3.10/Help/variable/CMAKE_MINIMUM_REQUIRED_VERSION.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_MINOR_VERSION.rst b/share/cmake-3.10/Help/variable/CMAKE_MINOR_VERSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_MINOR_VERSION.rst
rename to share/cmake-3.10/Help/variable/CMAKE_MINOR_VERSION.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_MODULE_LINKER_FLAGS.rst b/share/cmake-3.10/Help/variable/CMAKE_MODULE_LINKER_FLAGS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_MODULE_LINKER_FLAGS.rst
rename to share/cmake-3.10/Help/variable/CMAKE_MODULE_LINKER_FLAGS.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG.rst b/share/cmake-3.10/Help/variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG.rst
rename to share/cmake-3.10/Help/variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG_INIT.rst b/share/cmake-3.10/Help/variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG_INIT.rst
new file mode 100644
index 0000000..3279014
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG_INIT.rst
@@ -0,0 +1,10 @@
+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.10/Help/variable/CMAKE_MODULE_LINKER_FLAGS_INIT.rst b/share/cmake-3.10/Help/variable/CMAKE_MODULE_LINKER_FLAGS_INIT.rst
new file mode 100644
index 0000000..91b39f6
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_MODULE_LINKER_FLAGS_INIT.rst
@@ -0,0 +1,11 @@
+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.6/Help/variable/CMAKE_MODULE_PATH.rst b/share/cmake-3.10/Help/variable/CMAKE_MODULE_PATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_MODULE_PATH.rst
rename to share/cmake-3.10/Help/variable/CMAKE_MODULE_PATH.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_MSVCIDE_RUN_PATH.rst b/share/cmake-3.10/Help/variable/CMAKE_MSVCIDE_RUN_PATH.rst
new file mode 100644
index 0000000..22e727f
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_MSVCIDE_RUN_PATH.rst
@@ -0,0 +1,10 @@
+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.6/Help/variable/CMAKE_NINJA_OUTPUT_PATH_PREFIX.rst b/share/cmake-3.10/Help/variable/CMAKE_NINJA_OUTPUT_PATH_PREFIX.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_NINJA_OUTPUT_PATH_PREFIX.rst
rename to share/cmake-3.10/Help/variable/CMAKE_NINJA_OUTPUT_PATH_PREFIX.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_NOT_USING_CONFIG_FLAGS.rst b/share/cmake-3.10/Help/variable/CMAKE_NOT_USING_CONFIG_FLAGS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_NOT_USING_CONFIG_FLAGS.rst
rename to share/cmake-3.10/Help/variable/CMAKE_NOT_USING_CONFIG_FLAGS.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_NO_BUILTIN_CHRPATH.rst b/share/cmake-3.10/Help/variable/CMAKE_NO_BUILTIN_CHRPATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_NO_BUILTIN_CHRPATH.rst
rename to share/cmake-3.10/Help/variable/CMAKE_NO_BUILTIN_CHRPATH.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_NO_SYSTEM_FROM_IMPORTED.rst b/share/cmake-3.10/Help/variable/CMAKE_NO_SYSTEM_FROM_IMPORTED.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_NO_SYSTEM_FROM_IMPORTED.rst
rename to share/cmake-3.10/Help/variable/CMAKE_NO_SYSTEM_FROM_IMPORTED.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_OBJECT_PATH_MAX.rst b/share/cmake-3.10/Help/variable/CMAKE_OBJECT_PATH_MAX.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_OBJECT_PATH_MAX.rst
rename to share/cmake-3.10/Help/variable/CMAKE_OBJECT_PATH_MAX.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_OSX_ARCHITECTURES.rst b/share/cmake-3.10/Help/variable/CMAKE_OSX_ARCHITECTURES.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_OSX_ARCHITECTURES.rst
rename to share/cmake-3.10/Help/variable/CMAKE_OSX_ARCHITECTURES.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_OSX_DEPLOYMENT_TARGET.rst b/share/cmake-3.10/Help/variable/CMAKE_OSX_DEPLOYMENT_TARGET.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_OSX_DEPLOYMENT_TARGET.rst
rename to share/cmake-3.10/Help/variable/CMAKE_OSX_DEPLOYMENT_TARGET.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_OSX_SYSROOT.rst b/share/cmake-3.10/Help/variable/CMAKE_OSX_SYSROOT.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_OSX_SYSROOT.rst
rename to share/cmake-3.10/Help/variable/CMAKE_OSX_SYSROOT.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_OSX_VARIABLE.txt b/share/cmake-3.10/Help/variable/CMAKE_OSX_VARIABLE.txt
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_OSX_VARIABLE.txt
rename to share/cmake-3.10/Help/variable/CMAKE_OSX_VARIABLE.txt
diff --git a/share/cmake-3.6/Help/variable/CMAKE_PARENT_LIST_FILE.rst b/share/cmake-3.10/Help/variable/CMAKE_PARENT_LIST_FILE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_PARENT_LIST_FILE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_PARENT_LIST_FILE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_PATCH_VERSION.rst b/share/cmake-3.10/Help/variable/CMAKE_PATCH_VERSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_PATCH_VERSION.rst
rename to share/cmake-3.10/Help/variable/CMAKE_PATCH_VERSION.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_PDB_OUTPUT_DIRECTORY.rst b/share/cmake-3.10/Help/variable/CMAKE_PDB_OUTPUT_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_PDB_OUTPUT_DIRECTORY.rst
rename to share/cmake-3.10/Help/variable/CMAKE_PDB_OUTPUT_DIRECTORY.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_PDB_OUTPUT_DIRECTORY_CONFIG.rst b/share/cmake-3.10/Help/variable/CMAKE_PDB_OUTPUT_DIRECTORY_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_PDB_OUTPUT_DIRECTORY_CONFIG.rst
rename to share/cmake-3.10/Help/variable/CMAKE_PDB_OUTPUT_DIRECTORY_CONFIG.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_POLICY_DEFAULT_CMPNNNN.rst b/share/cmake-3.10/Help/variable/CMAKE_POLICY_DEFAULT_CMPNNNN.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_POLICY_DEFAULT_CMPNNNN.rst
rename to share/cmake-3.10/Help/variable/CMAKE_POLICY_DEFAULT_CMPNNNN.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_POLICY_WARNING_CMPNNNN.rst b/share/cmake-3.10/Help/variable/CMAKE_POLICY_WARNING_CMPNNNN.rst
new file mode 100644
index 0000000..aa23b65
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_POLICY_WARNING_CMPNNNN.rst
@@ -0,0 +1,27 @@
+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`.
+
+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.6/Help/variable/CMAKE_POSITION_INDEPENDENT_CODE.rst b/share/cmake-3.10/Help/variable/CMAKE_POSITION_INDEPENDENT_CODE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_POSITION_INDEPENDENT_CODE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_POSITION_INDEPENDENT_CODE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_PREFIX_PATH.rst b/share/cmake-3.10/Help/variable/CMAKE_PREFIX_PATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_PREFIX_PATH.rst
rename to share/cmake-3.10/Help/variable/CMAKE_PREFIX_PATH.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_PROGRAM_PATH.rst b/share/cmake-3.10/Help/variable/CMAKE_PROGRAM_PATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_PROGRAM_PATH.rst
rename to share/cmake-3.10/Help/variable/CMAKE_PROGRAM_PATH.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_PROJECT_DESCRIPTION.rst b/share/cmake-3.10/Help/variable/CMAKE_PROJECT_DESCRIPTION.rst
new file mode 100644
index 0000000..f1911ec
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_PROJECT_DESCRIPTION.rst
@@ -0,0 +1,7 @@
+CMAKE_PROJECT_DESCRIPTION
+-------------------------
+
+The description of the current project.
+
+This specifies description of the current project from the closest inherited
+:command:`project` command.
diff --git a/share/cmake-3.6/Help/variable/CMAKE_PROJECT_NAME.rst b/share/cmake-3.10/Help/variable/CMAKE_PROJECT_NAME.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_PROJECT_NAME.rst
rename to share/cmake-3.10/Help/variable/CMAKE_PROJECT_NAME.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE.rst b/share/cmake-3.10/Help/variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_RANLIB.rst b/share/cmake-3.10/Help/variable/CMAKE_RANLIB.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_RANLIB.rst
rename to share/cmake-3.10/Help/variable/CMAKE_RANLIB.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_ROOT.rst b/share/cmake-3.10/Help/variable/CMAKE_ROOT.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_ROOT.rst
rename to share/cmake-3.10/Help/variable/CMAKE_ROOT.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY.rst b/share/cmake-3.10/Help/variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY.rst
rename to share/cmake-3.10/Help/variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY_CONFIG.rst b/share/cmake-3.10/Help/variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY_CONFIG.rst
rename to share/cmake-3.10/Help/variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY_CONFIG.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_SCRIPT_MODE_FILE.rst b/share/cmake-3.10/Help/variable/CMAKE_SCRIPT_MODE_FILE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_SCRIPT_MODE_FILE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_SCRIPT_MODE_FILE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_SHARED_LIBRARY_PREFIX.rst b/share/cmake-3.10/Help/variable/CMAKE_SHARED_LIBRARY_PREFIX.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_SHARED_LIBRARY_PREFIX.rst
rename to share/cmake-3.10/Help/variable/CMAKE_SHARED_LIBRARY_PREFIX.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_SHARED_LIBRARY_SUFFIX.rst b/share/cmake-3.10/Help/variable/CMAKE_SHARED_LIBRARY_SUFFIX.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_SHARED_LIBRARY_SUFFIX.rst
rename to share/cmake-3.10/Help/variable/CMAKE_SHARED_LIBRARY_SUFFIX.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_SHARED_LINKER_FLAGS.rst b/share/cmake-3.10/Help/variable/CMAKE_SHARED_LINKER_FLAGS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_SHARED_LINKER_FLAGS.rst
rename to share/cmake-3.10/Help/variable/CMAKE_SHARED_LINKER_FLAGS.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_SHARED_LINKER_FLAGS_CONFIG.rst b/share/cmake-3.10/Help/variable/CMAKE_SHARED_LINKER_FLAGS_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_SHARED_LINKER_FLAGS_CONFIG.rst
rename to share/cmake-3.10/Help/variable/CMAKE_SHARED_LINKER_FLAGS_CONFIG.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_SHARED_LINKER_FLAGS_CONFIG_INIT.rst b/share/cmake-3.10/Help/variable/CMAKE_SHARED_LINKER_FLAGS_CONFIG_INIT.rst
new file mode 100644
index 0000000..185df38
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_SHARED_LINKER_FLAGS_CONFIG_INIT.rst
@@ -0,0 +1,10 @@
+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.10/Help/variable/CMAKE_SHARED_LINKER_FLAGS_INIT.rst b/share/cmake-3.10/Help/variable/CMAKE_SHARED_LINKER_FLAGS_INIT.rst
new file mode 100644
index 0000000..cb819a7
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_SHARED_LINKER_FLAGS_INIT.rst
@@ -0,0 +1,11 @@
+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.6/Help/variable/CMAKE_SHARED_MODULE_PREFIX.rst b/share/cmake-3.10/Help/variable/CMAKE_SHARED_MODULE_PREFIX.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_SHARED_MODULE_PREFIX.rst
rename to share/cmake-3.10/Help/variable/CMAKE_SHARED_MODULE_PREFIX.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_SHARED_MODULE_SUFFIX.rst b/share/cmake-3.10/Help/variable/CMAKE_SHARED_MODULE_SUFFIX.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_SHARED_MODULE_SUFFIX.rst
rename to share/cmake-3.10/Help/variable/CMAKE_SHARED_MODULE_SUFFIX.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_SIZEOF_VOID_P.rst b/share/cmake-3.10/Help/variable/CMAKE_SIZEOF_VOID_P.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_SIZEOF_VOID_P.rst
rename to share/cmake-3.10/Help/variable/CMAKE_SIZEOF_VOID_P.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_SKIP_BUILD_RPATH.rst b/share/cmake-3.10/Help/variable/CMAKE_SKIP_BUILD_RPATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_SKIP_BUILD_RPATH.rst
rename to share/cmake-3.10/Help/variable/CMAKE_SKIP_BUILD_RPATH.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_SKIP_INSTALL_ALL_DEPENDENCY.rst b/share/cmake-3.10/Help/variable/CMAKE_SKIP_INSTALL_ALL_DEPENDENCY.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_SKIP_INSTALL_ALL_DEPENDENCY.rst
rename to share/cmake-3.10/Help/variable/CMAKE_SKIP_INSTALL_ALL_DEPENDENCY.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_SKIP_INSTALL_RPATH.rst b/share/cmake-3.10/Help/variable/CMAKE_SKIP_INSTALL_RPATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_SKIP_INSTALL_RPATH.rst
rename to share/cmake-3.10/Help/variable/CMAKE_SKIP_INSTALL_RPATH.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_SKIP_INSTALL_RULES.rst b/share/cmake-3.10/Help/variable/CMAKE_SKIP_INSTALL_RULES.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_SKIP_INSTALL_RULES.rst
rename to share/cmake-3.10/Help/variable/CMAKE_SKIP_INSTALL_RULES.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_SKIP_RPATH.rst b/share/cmake-3.10/Help/variable/CMAKE_SKIP_RPATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_SKIP_RPATH.rst
rename to share/cmake-3.10/Help/variable/CMAKE_SKIP_RPATH.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_SOURCE_DIR.rst b/share/cmake-3.10/Help/variable/CMAKE_SOURCE_DIR.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_SOURCE_DIR.rst
rename to share/cmake-3.10/Help/variable/CMAKE_SOURCE_DIR.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_STAGING_PREFIX.rst b/share/cmake-3.10/Help/variable/CMAKE_STAGING_PREFIX.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_STAGING_PREFIX.rst
rename to share/cmake-3.10/Help/variable/CMAKE_STAGING_PREFIX.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_STATIC_LIBRARY_PREFIX.rst b/share/cmake-3.10/Help/variable/CMAKE_STATIC_LIBRARY_PREFIX.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_STATIC_LIBRARY_PREFIX.rst
rename to share/cmake-3.10/Help/variable/CMAKE_STATIC_LIBRARY_PREFIX.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_STATIC_LIBRARY_SUFFIX.rst b/share/cmake-3.10/Help/variable/CMAKE_STATIC_LIBRARY_SUFFIX.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_STATIC_LIBRARY_SUFFIX.rst
rename to share/cmake-3.10/Help/variable/CMAKE_STATIC_LIBRARY_SUFFIX.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_STATIC_LINKER_FLAGS.rst b/share/cmake-3.10/Help/variable/CMAKE_STATIC_LINKER_FLAGS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_STATIC_LINKER_FLAGS.rst
rename to share/cmake-3.10/Help/variable/CMAKE_STATIC_LINKER_FLAGS.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG.rst b/share/cmake-3.10/Help/variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG.rst
rename to share/cmake-3.10/Help/variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG_INIT.rst b/share/cmake-3.10/Help/variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG_INIT.rst
new file mode 100644
index 0000000..a49d1cb
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG_INIT.rst
@@ -0,0 +1,10 @@
+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.10/Help/variable/CMAKE_STATIC_LINKER_FLAGS_INIT.rst b/share/cmake-3.10/Help/variable/CMAKE_STATIC_LINKER_FLAGS_INIT.rst
new file mode 100644
index 0000000..113ca71
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_STATIC_LINKER_FLAGS_INIT.rst
@@ -0,0 +1,11 @@
+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.10/Help/variable/CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS.rst b/share/cmake-3.10/Help/variable/CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS.rst
new file mode 100644
index 0000000..02c8663
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS.rst
@@ -0,0 +1,25 @@
+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.10/Help/variable/CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE.rst b/share/cmake-3.10/Help/variable/CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE.rst
new file mode 100644
index 0000000..d654425
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE.rst
@@ -0,0 +1,7 @@
+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.10/Help/variable/CMAKE_SYSROOT.rst b/share/cmake-3.10/Help/variable/CMAKE_SYSROOT.rst
new file mode 100644
index 0000000..64f81bb
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_SYSROOT.rst
@@ -0,0 +1,15 @@
+CMAKE_SYSROOT
+-------------
+
+Path to pass to the compiler in the ``--sysroot`` flag.
+
+The ``CMAKE_SYSROOT`` content is passed to the compiler in the ``--sysroot``
+flag, if supported.  The path is also stripped from the RPATH/RUNPATH if
+necessary on installation.  The ``CMAKE_SYSROOT`` is also used to prefix
+paths searched by the ``find_*`` commands.
+
+This variable may only be set in a toolchain file specified by
+the :variable:`CMAKE_TOOLCHAIN_FILE` variable.
+
+See also the :variable:`CMAKE_SYSROOT_COMPILE` and
+:variable:`CMAKE_SYSROOT_LINK` variables.
diff --git a/share/cmake-3.10/Help/variable/CMAKE_SYSROOT_COMPILE.rst b/share/cmake-3.10/Help/variable/CMAKE_SYSROOT_COMPILE.rst
new file mode 100644
index 0000000..e96c62b
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_SYSROOT_COMPILE.rst
@@ -0,0 +1,9 @@
+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.10/Help/variable/CMAKE_SYSROOT_LINK.rst b/share/cmake-3.10/Help/variable/CMAKE_SYSROOT_LINK.rst
new file mode 100644
index 0000000..88b48ef
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_SYSROOT_LINK.rst
@@ -0,0 +1,9 @@
+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.6/Help/variable/CMAKE_SYSTEM.rst b/share/cmake-3.10/Help/variable/CMAKE_SYSTEM.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_SYSTEM.rst
rename to share/cmake-3.10/Help/variable/CMAKE_SYSTEM.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_SYSTEM_APPBUNDLE_PATH.rst b/share/cmake-3.10/Help/variable/CMAKE_SYSTEM_APPBUNDLE_PATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_SYSTEM_APPBUNDLE_PATH.rst
rename to share/cmake-3.10/Help/variable/CMAKE_SYSTEM_APPBUNDLE_PATH.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_SYSTEM_FRAMEWORK_PATH.rst b/share/cmake-3.10/Help/variable/CMAKE_SYSTEM_FRAMEWORK_PATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_SYSTEM_FRAMEWORK_PATH.rst
rename to share/cmake-3.10/Help/variable/CMAKE_SYSTEM_FRAMEWORK_PATH.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_SYSTEM_IGNORE_PATH.rst b/share/cmake-3.10/Help/variable/CMAKE_SYSTEM_IGNORE_PATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_SYSTEM_IGNORE_PATH.rst
rename to share/cmake-3.10/Help/variable/CMAKE_SYSTEM_IGNORE_PATH.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_SYSTEM_INCLUDE_PATH.rst b/share/cmake-3.10/Help/variable/CMAKE_SYSTEM_INCLUDE_PATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_SYSTEM_INCLUDE_PATH.rst
rename to share/cmake-3.10/Help/variable/CMAKE_SYSTEM_INCLUDE_PATH.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_SYSTEM_LIBRARY_PATH.rst b/share/cmake-3.10/Help/variable/CMAKE_SYSTEM_LIBRARY_PATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_SYSTEM_LIBRARY_PATH.rst
rename to share/cmake-3.10/Help/variable/CMAKE_SYSTEM_LIBRARY_PATH.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_SYSTEM_NAME.rst b/share/cmake-3.10/Help/variable/CMAKE_SYSTEM_NAME.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_SYSTEM_NAME.rst
rename to share/cmake-3.10/Help/variable/CMAKE_SYSTEM_NAME.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_SYSTEM_PREFIX_PATH.rst b/share/cmake-3.10/Help/variable/CMAKE_SYSTEM_PREFIX_PATH.rst
new file mode 100644
index 0000000..38b2f8d
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_SYSTEM_PREFIX_PATH.rst
@@ -0,0 +1,21 @@
+CMAKE_SYSTEM_PREFIX_PATH
+------------------------
+
+:ref:`;-list <CMake Language Lists>` of directories specifying installation
+*prefixes* to be searched by the :command:`find_package`,
+:command:`find_program`, :command:`find_library`, :command:`find_file`, and
+:command:`find_path` commands.  Each command will add appropriate
+subdirectories (like ``bin``, ``lib``, or ``include``) as specified in its own
+documentation.
+
+By default this contains the standard directories for the current system, the
+:variable:`CMAKE_INSTALL_PREFIX`, and the :variable:`CMAKE_STAGING_PREFIX`.
+The installation and staging prefixes may be excluded by setting
+the :variable:`CMAKE_FIND_NO_INSTALL_PREFIX` variable.
+
+``CMAKE_SYSTEM_PREFIX_PATH`` is *not* intended to be modified by the project;
+use :variable:`CMAKE_PREFIX_PATH` for this.
+
+See also :variable:`CMAKE_SYSTEM_INCLUDE_PATH`,
+:variable:`CMAKE_SYSTEM_LIBRARY_PATH`, :variable:`CMAKE_SYSTEM_PROGRAM_PATH`,
+and :variable:`CMAKE_SYSTEM_IGNORE_PATH`.
diff --git a/share/cmake-3.6/Help/variable/CMAKE_SYSTEM_PROCESSOR.rst b/share/cmake-3.10/Help/variable/CMAKE_SYSTEM_PROCESSOR.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_SYSTEM_PROCESSOR.rst
rename to share/cmake-3.10/Help/variable/CMAKE_SYSTEM_PROCESSOR.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_SYSTEM_PROGRAM_PATH.rst b/share/cmake-3.10/Help/variable/CMAKE_SYSTEM_PROGRAM_PATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_SYSTEM_PROGRAM_PATH.rst
rename to share/cmake-3.10/Help/variable/CMAKE_SYSTEM_PROGRAM_PATH.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_SYSTEM_VERSION.rst b/share/cmake-3.10/Help/variable/CMAKE_SYSTEM_VERSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_SYSTEM_VERSION.rst
rename to share/cmake-3.10/Help/variable/CMAKE_SYSTEM_VERSION.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_Swift_LANGUAGE_VERSION.rst b/share/cmake-3.10/Help/variable/CMAKE_Swift_LANGUAGE_VERSION.rst
new file mode 100644
index 0000000..50121e2
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_Swift_LANGUAGE_VERSION.rst
@@ -0,0 +1,5 @@
+CMAKE_Swift_LANGUAGE_VERSION
+----------------------------
+
+Set to the Swift language version number.  If not set, the legacy "2.3"
+version is assumed.
diff --git a/share/cmake-3.6/Help/variable/CMAKE_TOOLCHAIN_FILE.rst b/share/cmake-3.10/Help/variable/CMAKE_TOOLCHAIN_FILE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_TOOLCHAIN_FILE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_TOOLCHAIN_FILE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_TRY_COMPILE_CONFIGURATION.rst b/share/cmake-3.10/Help/variable/CMAKE_TRY_COMPILE_CONFIGURATION.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_TRY_COMPILE_CONFIGURATION.rst
rename to share/cmake-3.10/Help/variable/CMAKE_TRY_COMPILE_CONFIGURATION.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_TRY_COMPILE_PLATFORM_VARIABLES.rst b/share/cmake-3.10/Help/variable/CMAKE_TRY_COMPILE_PLATFORM_VARIABLES.rst
new file mode 100644
index 0000000..0f96787
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_TRY_COMPILE_PLATFORM_VARIABLES.rst
@@ -0,0 +1,26 @@
+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.6/Help/variable/CMAKE_TRY_COMPILE_TARGET_TYPE.rst b/share/cmake-3.10/Help/variable/CMAKE_TRY_COMPILE_TARGET_TYPE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_TRY_COMPILE_TARGET_TYPE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_TRY_COMPILE_TARGET_TYPE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_TWEAK_VERSION.rst b/share/cmake-3.10/Help/variable/CMAKE_TWEAK_VERSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_TWEAK_VERSION.rst
rename to share/cmake-3.10/Help/variable/CMAKE_TWEAK_VERSION.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_USER_MAKE_RULES_OVERRIDE.rst b/share/cmake-3.10/Help/variable/CMAKE_USER_MAKE_RULES_OVERRIDE.rst
new file mode 100644
index 0000000..622278e
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_USER_MAKE_RULES_OVERRIDE.rst
@@ -0,0 +1,25 @@
+CMAKE_USER_MAKE_RULES_OVERRIDE
+------------------------------
+
+Specify a CMake file that overrides platform information.
+
+CMake loads the specified file while enabling support for each
+language from either the :command:`project` or :command:`enable_language`
+commands.  It is loaded after CMake's builtin compiler and platform information
+modules have been loaded but before the information is used.  The file
+may set platform information variables to override CMake's defaults.
+
+This feature is intended for use only in overriding information
+variables that must be set before CMake builds its first test project
+to check that the compiler for a language works.  It should not be
+used to load a file in cases that a normal :command:`include` will work.  Use
+it only as a last resort for behavior that cannot be achieved any
+other way.  For example, one may set the
+:variable:`CMAKE_C_FLAGS_INIT <CMAKE_<LANG>_FLAGS_INIT>` variable
+to change the default value used to initialize the
+:variable:`CMAKE_C_FLAGS <CMAKE_<LANG>_FLAGS>` variable
+before it is cached.  The override file should NOT be used to set anything
+that could be set after languages are enabled, such as variables like
+:variable:`CMAKE_RUNTIME_OUTPUT_DIRECTORY` that affect the placement of
+binaries.  Information set in the file will be used for :command:`try_compile`
+and :command:`try_run` builds too.
diff --git a/share/cmake-3.6/Help/variable/CMAKE_USER_MAKE_RULES_OVERRIDE_LANG.rst b/share/cmake-3.10/Help/variable/CMAKE_USER_MAKE_RULES_OVERRIDE_LANG.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_USER_MAKE_RULES_OVERRIDE_LANG.rst
rename to share/cmake-3.10/Help/variable/CMAKE_USER_MAKE_RULES_OVERRIDE_LANG.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_USE_RELATIVE_PATHS.rst b/share/cmake-3.10/Help/variable/CMAKE_USE_RELATIVE_PATHS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_USE_RELATIVE_PATHS.rst
rename to share/cmake-3.10/Help/variable/CMAKE_USE_RELATIVE_PATHS.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_VERBOSE_MAKEFILE.rst b/share/cmake-3.10/Help/variable/CMAKE_VERBOSE_MAKEFILE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_VERBOSE_MAKEFILE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_VERBOSE_MAKEFILE.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_VERSION.rst b/share/cmake-3.10/Help/variable/CMAKE_VERSION.rst
new file mode 100644
index 0000000..872e2fa
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_VERSION.rst
@@ -0,0 +1,51 @@
+CMAKE_VERSION
+-------------
+
+The CMake version string as three non-negative integer components
+separated by ``.`` and possibly followed by ``-`` and other information.
+The first two components represent the feature level and the third
+component represents either a bug-fix level or development date.
+
+Release versions and release candidate versions of CMake use the format::
+
+  <major>.<minor>.<patch>[-rc<n>]
+
+where the ``<patch>`` component is less than ``20000000``.  Development
+versions of CMake use the format::
+
+  <major>.<minor>.<date>[-<id>]
+
+where the ``<date>`` component is of format ``CCYYMMDD`` and ``<id>``
+may contain arbitrary text.  This represents development as of a
+particular date following the ``<major>.<minor>`` feature release.
+
+Individual component values are also available in variables:
+
+* :variable:`CMAKE_MAJOR_VERSION`
+* :variable:`CMAKE_MINOR_VERSION`
+* :variable:`CMAKE_PATCH_VERSION`
+* :variable:`CMAKE_TWEAK_VERSION`
+
+Use the :command:`if` command ``VERSION_LESS``, ``VERSION_GREATER``,
+``VERSION_EQUAL``, ``VERSION_LESS_EQUAL``, or ``VERSION_GREATER_EQUAL``
+operators to compare version string values against ``CMAKE_VERSION`` using a
+component-wise test.  Version component values may be 10 or larger so do not
+attempt to compare version strings as floating-point numbers.
+
+.. note::
+
+  CMake versions 2.8.2 through 2.8.12 used three components for the
+  feature level.  Release versions represented the bug-fix level in a
+  fourth component, i.e. ``<major>.<minor>.<patch>[.<tweak>][-rc<n>]``.
+  Development versions represented the development date in the fourth
+  component, i.e. ``<major>.<minor>.<patch>.<date>[-<id>]``.
+
+  CMake versions prior to 2.8.2 used three components for the
+  feature level and had no bug-fix component.  Release versions
+  used an even-valued second component, i.e.
+  ``<major>.<even-minor>.<patch>[-rc<n>]``.  Development versions
+  used an odd-valued second component with the development date as
+  the third component, i.e. ``<major>.<odd-minor>.<date>``.
+
+  The ``CMAKE_VERSION`` variable is defined by CMake 2.6.3 and higher.
+  Earlier versions defined only the individual component variables.
diff --git a/share/cmake-3.6/Help/variable/CMAKE_VISIBILITY_INLINES_HIDDEN.rst b/share/cmake-3.10/Help/variable/CMAKE_VISIBILITY_INLINES_HIDDEN.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_VISIBILITY_INLINES_HIDDEN.rst
rename to share/cmake-3.10/Help/variable/CMAKE_VISIBILITY_INLINES_HIDDEN.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_VS_DEVENV_COMMAND.rst b/share/cmake-3.10/Help/variable/CMAKE_VS_DEVENV_COMMAND.rst
new file mode 100644
index 0000000..51b42dd
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_VS_DEVENV_COMMAND.rst
@@ -0,0 +1,14 @@
+CMAKE_VS_DEVENV_COMMAND
+-----------------------
+
+The generators for :generator:`Visual Studio 8 2005` and above set this
+variable to the ``devenv.com`` command installed with the corresponding
+Visual Studio version.  Note that this variable may be empty on
+Visual Studio Express editions because they do not provide this tool.
+
+This variable is not defined by other generators even if ``devenv.com``
+is installed on the computer.
+
+The :variable:`CMAKE_VS_MSBUILD_COMMAND` is also provided for
+:generator:`Visual Studio 10 2010` and above.
+See also the :variable:`CMAKE_MAKE_PROGRAM` variable.
diff --git a/share/cmake-3.6/Help/variable/CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD.rst b/share/cmake-3.10/Help/variable/CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD.rst
rename to share/cmake-3.10/Help/variable/CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD.rst b/share/cmake-3.10/Help/variable/CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD.rst
new file mode 100644
index 0000000..693ba45
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD.rst
@@ -0,0 +1,8 @@
+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.10/Help/variable/CMAKE_VS_INTEL_Fortran_PROJECT_VERSION.rst b/share/cmake-3.10/Help/variable/CMAKE_VS_INTEL_Fortran_PROJECT_VERSION.rst
new file mode 100644
index 0000000..6d196f9
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_VS_INTEL_Fortran_PROJECT_VERSION.rst
@@ -0,0 +1,7 @@
+CMAKE_VS_INTEL_Fortran_PROJECT_VERSION
+--------------------------------------
+
+When generating for :generator:`Visual Studio 8 2005` or greater with the Intel
+Fortran plugin installed, this specifies the ``.vfproj`` project file format
+version.  This is intended for internal use by CMake and should not be
+used by project code.
diff --git a/share/cmake-3.6/Help/variable/CMAKE_VS_MSBUILD_COMMAND.rst b/share/cmake-3.10/Help/variable/CMAKE_VS_MSBUILD_COMMAND.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_VS_MSBUILD_COMMAND.rst
rename to share/cmake-3.10/Help/variable/CMAKE_VS_MSBUILD_COMMAND.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_VS_NsightTegra_VERSION.rst b/share/cmake-3.10/Help/variable/CMAKE_VS_NsightTegra_VERSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_VS_NsightTegra_VERSION.rst
rename to share/cmake-3.10/Help/variable/CMAKE_VS_NsightTegra_VERSION.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_VS_PLATFORM_NAME.rst b/share/cmake-3.10/Help/variable/CMAKE_VS_PLATFORM_NAME.rst
new file mode 100644
index 0000000..a532743
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_VS_PLATFORM_NAME.rst
@@ -0,0 +1,8 @@
+CMAKE_VS_PLATFORM_NAME
+----------------------
+
+Visual Studio target platform name.
+
+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.
diff --git a/share/cmake-3.10/Help/variable/CMAKE_VS_PLATFORM_TOOLSET.rst b/share/cmake-3.10/Help/variable/CMAKE_VS_PLATFORM_TOOLSET.rst
new file mode 100644
index 0000000..ed2d3f3
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_VS_PLATFORM_TOOLSET.rst
@@ -0,0 +1,12 @@
+CMAKE_VS_PLATFORM_TOOLSET
+-------------------------
+
+Visual Studio Platform Toolset name.
+
+VS 10 and above use MSBuild under the hood and support multiple
+compiler toolchains.  CMake may specify a toolset explicitly, such as
+``v110`` for VS 11 or ``Windows7.1SDK`` for 64-bit support in VS 10
+Express.  CMake provides the name of the chosen toolset in this
+variable.
+
+See the :variable:`CMAKE_GENERATOR_TOOLSET` variable for details.
diff --git a/share/cmake-3.10/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA.rst b/share/cmake-3.10/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA.rst
new file mode 100644
index 0000000..1604a76
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA.rst
@@ -0,0 +1,12 @@
+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``.  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.10/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE.rst b/share/cmake-3.10/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE.rst
new file mode 100644
index 0000000..9b59c52
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE.rst
@@ -0,0 +1,10 @@
+CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE
+-------------------------------------------
+
+Visual Studio preferred tool architecture.
+
+The :ref:`Visual Studio Generators` for VS 2013 and above support optional
+selection of a 64-bit toolchain on 64-bit hosts by specifying a ``host=x64``
+value in the :variable:`CMAKE_GENERATOR_TOOLSET` option.  CMake provides
+the selected toolchain architecture preference in this variable (either
+``x64`` or empty).
diff --git a/share/cmake-3.10/Help/variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION.rst b/share/cmake-3.10/Help/variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION.rst
new file mode 100644
index 0000000..83b9bc1
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION.rst
@@ -0,0 +1,17 @@
+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.6/Help/variable/CMAKE_WARN_DEPRECATED.rst b/share/cmake-3.10/Help/variable/CMAKE_WARN_DEPRECATED.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_WARN_DEPRECATED.rst
rename to share/cmake-3.10/Help/variable/CMAKE_WARN_DEPRECATED.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION.rst b/share/cmake-3.10/Help/variable/CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION.rst
rename to share/cmake-3.10/Help/variable/CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_WIN32_EXECUTABLE.rst b/share/cmake-3.10/Help/variable/CMAKE_WIN32_EXECUTABLE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_WIN32_EXECUTABLE.rst
rename to share/cmake-3.10/Help/variable/CMAKE_WIN32_EXECUTABLE.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.rst b/share/cmake-3.10/Help/variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.rst
rename to share/cmake-3.10/Help/variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.rst
diff --git a/share/cmake-3.6/Help/variable/CMAKE_XCODE_ATTRIBUTE_an-attribute.rst b/share/cmake-3.10/Help/variable/CMAKE_XCODE_ATTRIBUTE_an-attribute.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_XCODE_ATTRIBUTE_an-attribute.rst
rename to share/cmake-3.10/Help/variable/CMAKE_XCODE_ATTRIBUTE_an-attribute.rst
diff --git a/share/cmake-3.10/Help/variable/CMAKE_XCODE_GENERATE_SCHEME.rst b/share/cmake-3.10/Help/variable/CMAKE_XCODE_GENERATE_SCHEME.rst
new file mode 100644
index 0000000..c9fcc92
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CMAKE_XCODE_GENERATE_SCHEME.rst
@@ -0,0 +1,11 @@
+CMAKE_XCODE_GENERATE_SCHEME
+---------------------------
+
+If enabled, the Xcode generator will generate schema files. Those are
+are useful to invoke analyze, archive, build-for-testing and test
+actions from the command line.
+
+.. note::
+
+  The Xcode Schema Generator is still experimental and subject to
+  change.
diff --git a/share/cmake-3.6/Help/variable/CMAKE_XCODE_PLATFORM_TOOLSET.rst b/share/cmake-3.10/Help/variable/CMAKE_XCODE_PLATFORM_TOOLSET.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CMAKE_XCODE_PLATFORM_TOOLSET.rst
rename to share/cmake-3.10/Help/variable/CMAKE_XCODE_PLATFORM_TOOLSET.rst
diff --git a/share/cmake-3.6/Help/variable/CPACK_ABSOLUTE_DESTINATION_FILES.rst b/share/cmake-3.10/Help/variable/CPACK_ABSOLUTE_DESTINATION_FILES.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CPACK_ABSOLUTE_DESTINATION_FILES.rst
rename to share/cmake-3.10/Help/variable/CPACK_ABSOLUTE_DESTINATION_FILES.rst
diff --git a/share/cmake-3.6/Help/variable/CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY.rst b/share/cmake-3.10/Help/variable/CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY.rst
rename to share/cmake-3.10/Help/variable/CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY.rst
diff --git a/share/cmake-3.6/Help/variable/CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION.rst b/share/cmake-3.10/Help/variable/CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION.rst
rename to share/cmake-3.10/Help/variable/CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION.rst
diff --git a/share/cmake-3.6/Help/variable/CPACK_INCLUDE_TOPLEVEL_DIRECTORY.rst b/share/cmake-3.10/Help/variable/CPACK_INCLUDE_TOPLEVEL_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CPACK_INCLUDE_TOPLEVEL_DIRECTORY.rst
rename to share/cmake-3.10/Help/variable/CPACK_INCLUDE_TOPLEVEL_DIRECTORY.rst
diff --git a/share/cmake-3.6/Help/variable/CPACK_INSTALL_SCRIPT.rst b/share/cmake-3.10/Help/variable/CPACK_INSTALL_SCRIPT.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CPACK_INSTALL_SCRIPT.rst
rename to share/cmake-3.10/Help/variable/CPACK_INSTALL_SCRIPT.rst
diff --git a/share/cmake-3.6/Help/variable/CPACK_PACKAGING_INSTALL_PREFIX.rst b/share/cmake-3.10/Help/variable/CPACK_PACKAGING_INSTALL_PREFIX.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CPACK_PACKAGING_INSTALL_PREFIX.rst
rename to share/cmake-3.10/Help/variable/CPACK_PACKAGING_INSTALL_PREFIX.rst
diff --git a/share/cmake-3.6/Help/variable/CPACK_SET_DESTDIR.rst b/share/cmake-3.10/Help/variable/CPACK_SET_DESTDIR.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CPACK_SET_DESTDIR.rst
rename to share/cmake-3.10/Help/variable/CPACK_SET_DESTDIR.rst
diff --git a/share/cmake-3.6/Help/variable/CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION.rst b/share/cmake-3.10/Help/variable/CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION.rst
rename to share/cmake-3.10/Help/variable/CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_BINARY_DIRECTORY.rst b/share/cmake-3.10/Help/variable/CTEST_BINARY_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_BINARY_DIRECTORY.rst
rename to share/cmake-3.10/Help/variable/CTEST_BINARY_DIRECTORY.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_BUILD_COMMAND.rst b/share/cmake-3.10/Help/variable/CTEST_BUILD_COMMAND.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_BUILD_COMMAND.rst
rename to share/cmake-3.10/Help/variable/CTEST_BUILD_COMMAND.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_BUILD_NAME.rst b/share/cmake-3.10/Help/variable/CTEST_BUILD_NAME.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_BUILD_NAME.rst
rename to share/cmake-3.10/Help/variable/CTEST_BUILD_NAME.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_BZR_COMMAND.rst b/share/cmake-3.10/Help/variable/CTEST_BZR_COMMAND.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_BZR_COMMAND.rst
rename to share/cmake-3.10/Help/variable/CTEST_BZR_COMMAND.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_BZR_UPDATE_OPTIONS.rst b/share/cmake-3.10/Help/variable/CTEST_BZR_UPDATE_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_BZR_UPDATE_OPTIONS.rst
rename to share/cmake-3.10/Help/variable/CTEST_BZR_UPDATE_OPTIONS.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_CHANGE_ID.rst b/share/cmake-3.10/Help/variable/CTEST_CHANGE_ID.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_CHANGE_ID.rst
rename to share/cmake-3.10/Help/variable/CTEST_CHANGE_ID.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_CHECKOUT_COMMAND.rst b/share/cmake-3.10/Help/variable/CTEST_CHECKOUT_COMMAND.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_CHECKOUT_COMMAND.rst
rename to share/cmake-3.10/Help/variable/CTEST_CHECKOUT_COMMAND.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_CONFIGURATION_TYPE.rst b/share/cmake-3.10/Help/variable/CTEST_CONFIGURATION_TYPE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_CONFIGURATION_TYPE.rst
rename to share/cmake-3.10/Help/variable/CTEST_CONFIGURATION_TYPE.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_CONFIGURE_COMMAND.rst b/share/cmake-3.10/Help/variable/CTEST_CONFIGURE_COMMAND.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_CONFIGURE_COMMAND.rst
rename to share/cmake-3.10/Help/variable/CTEST_CONFIGURE_COMMAND.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_COVERAGE_COMMAND.rst b/share/cmake-3.10/Help/variable/CTEST_COVERAGE_COMMAND.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_COVERAGE_COMMAND.rst
rename to share/cmake-3.10/Help/variable/CTEST_COVERAGE_COMMAND.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_COVERAGE_EXTRA_FLAGS.rst b/share/cmake-3.10/Help/variable/CTEST_COVERAGE_EXTRA_FLAGS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_COVERAGE_EXTRA_FLAGS.rst
rename to share/cmake-3.10/Help/variable/CTEST_COVERAGE_EXTRA_FLAGS.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_CURL_OPTIONS.rst b/share/cmake-3.10/Help/variable/CTEST_CURL_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_CURL_OPTIONS.rst
rename to share/cmake-3.10/Help/variable/CTEST_CURL_OPTIONS.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_CUSTOM_COVERAGE_EXCLUDE.rst b/share/cmake-3.10/Help/variable/CTEST_CUSTOM_COVERAGE_EXCLUDE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_CUSTOM_COVERAGE_EXCLUDE.rst
rename to share/cmake-3.10/Help/variable/CTEST_CUSTOM_COVERAGE_EXCLUDE.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_CUSTOM_ERROR_EXCEPTION.rst b/share/cmake-3.10/Help/variable/CTEST_CUSTOM_ERROR_EXCEPTION.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_CUSTOM_ERROR_EXCEPTION.rst
rename to share/cmake-3.10/Help/variable/CTEST_CUSTOM_ERROR_EXCEPTION.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_CUSTOM_ERROR_MATCH.rst b/share/cmake-3.10/Help/variable/CTEST_CUSTOM_ERROR_MATCH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_CUSTOM_ERROR_MATCH.rst
rename to share/cmake-3.10/Help/variable/CTEST_CUSTOM_ERROR_MATCH.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_CUSTOM_ERROR_POST_CONTEXT.rst b/share/cmake-3.10/Help/variable/CTEST_CUSTOM_ERROR_POST_CONTEXT.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_CUSTOM_ERROR_POST_CONTEXT.rst
rename to share/cmake-3.10/Help/variable/CTEST_CUSTOM_ERROR_POST_CONTEXT.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_CUSTOM_ERROR_PRE_CONTEXT.rst b/share/cmake-3.10/Help/variable/CTEST_CUSTOM_ERROR_PRE_CONTEXT.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_CUSTOM_ERROR_PRE_CONTEXT.rst
rename to share/cmake-3.10/Help/variable/CTEST_CUSTOM_ERROR_PRE_CONTEXT.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE.rst b/share/cmake-3.10/Help/variable/CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE.rst
rename to share/cmake-3.10/Help/variable/CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS.rst b/share/cmake-3.10/Help/variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS.rst
rename to share/cmake-3.10/Help/variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS.rst b/share/cmake-3.10/Help/variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS.rst
rename to share/cmake-3.10/Help/variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE.rst b/share/cmake-3.10/Help/variable/CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE.rst
rename to share/cmake-3.10/Help/variable/CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_CUSTOM_MEMCHECK_IGNORE.rst b/share/cmake-3.10/Help/variable/CTEST_CUSTOM_MEMCHECK_IGNORE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_CUSTOM_MEMCHECK_IGNORE.rst
rename to share/cmake-3.10/Help/variable/CTEST_CUSTOM_MEMCHECK_IGNORE.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_CUSTOM_POST_MEMCHECK.rst b/share/cmake-3.10/Help/variable/CTEST_CUSTOM_POST_MEMCHECK.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_CUSTOM_POST_MEMCHECK.rst
rename to share/cmake-3.10/Help/variable/CTEST_CUSTOM_POST_MEMCHECK.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_CUSTOM_POST_TEST.rst b/share/cmake-3.10/Help/variable/CTEST_CUSTOM_POST_TEST.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_CUSTOM_POST_TEST.rst
rename to share/cmake-3.10/Help/variable/CTEST_CUSTOM_POST_TEST.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_CUSTOM_PRE_MEMCHECK.rst b/share/cmake-3.10/Help/variable/CTEST_CUSTOM_PRE_MEMCHECK.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_CUSTOM_PRE_MEMCHECK.rst
rename to share/cmake-3.10/Help/variable/CTEST_CUSTOM_PRE_MEMCHECK.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_CUSTOM_PRE_TEST.rst b/share/cmake-3.10/Help/variable/CTEST_CUSTOM_PRE_TEST.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_CUSTOM_PRE_TEST.rst
rename to share/cmake-3.10/Help/variable/CTEST_CUSTOM_PRE_TEST.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_CUSTOM_TEST_IGNORE.rst b/share/cmake-3.10/Help/variable/CTEST_CUSTOM_TEST_IGNORE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_CUSTOM_TEST_IGNORE.rst
rename to share/cmake-3.10/Help/variable/CTEST_CUSTOM_TEST_IGNORE.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_CUSTOM_WARNING_EXCEPTION.rst b/share/cmake-3.10/Help/variable/CTEST_CUSTOM_WARNING_EXCEPTION.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_CUSTOM_WARNING_EXCEPTION.rst
rename to share/cmake-3.10/Help/variable/CTEST_CUSTOM_WARNING_EXCEPTION.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_CUSTOM_WARNING_MATCH.rst b/share/cmake-3.10/Help/variable/CTEST_CUSTOM_WARNING_MATCH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_CUSTOM_WARNING_MATCH.rst
rename to share/cmake-3.10/Help/variable/CTEST_CUSTOM_WARNING_MATCH.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_CUSTOM_XXX.txt b/share/cmake-3.10/Help/variable/CTEST_CUSTOM_XXX.txt
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_CUSTOM_XXX.txt
rename to share/cmake-3.10/Help/variable/CTEST_CUSTOM_XXX.txt
diff --git a/share/cmake-3.6/Help/variable/CTEST_CVS_CHECKOUT.rst b/share/cmake-3.10/Help/variable/CTEST_CVS_CHECKOUT.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_CVS_CHECKOUT.rst
rename to share/cmake-3.10/Help/variable/CTEST_CVS_CHECKOUT.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_CVS_COMMAND.rst b/share/cmake-3.10/Help/variable/CTEST_CVS_COMMAND.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_CVS_COMMAND.rst
rename to share/cmake-3.10/Help/variable/CTEST_CVS_COMMAND.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_CVS_UPDATE_OPTIONS.rst b/share/cmake-3.10/Help/variable/CTEST_CVS_UPDATE_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_CVS_UPDATE_OPTIONS.rst
rename to share/cmake-3.10/Help/variable/CTEST_CVS_UPDATE_OPTIONS.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_DROP_LOCATION.rst b/share/cmake-3.10/Help/variable/CTEST_DROP_LOCATION.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_DROP_LOCATION.rst
rename to share/cmake-3.10/Help/variable/CTEST_DROP_LOCATION.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_DROP_METHOD.rst b/share/cmake-3.10/Help/variable/CTEST_DROP_METHOD.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_DROP_METHOD.rst
rename to share/cmake-3.10/Help/variable/CTEST_DROP_METHOD.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_DROP_SITE.rst b/share/cmake-3.10/Help/variable/CTEST_DROP_SITE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_DROP_SITE.rst
rename to share/cmake-3.10/Help/variable/CTEST_DROP_SITE.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_DROP_SITE_CDASH.rst b/share/cmake-3.10/Help/variable/CTEST_DROP_SITE_CDASH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_DROP_SITE_CDASH.rst
rename to share/cmake-3.10/Help/variable/CTEST_DROP_SITE_CDASH.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_DROP_SITE_PASSWORD.rst b/share/cmake-3.10/Help/variable/CTEST_DROP_SITE_PASSWORD.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_DROP_SITE_PASSWORD.rst
rename to share/cmake-3.10/Help/variable/CTEST_DROP_SITE_PASSWORD.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_DROP_SITE_USER.rst b/share/cmake-3.10/Help/variable/CTEST_DROP_SITE_USER.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_DROP_SITE_USER.rst
rename to share/cmake-3.10/Help/variable/CTEST_DROP_SITE_USER.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_EXTRA_COVERAGE_GLOB.rst b/share/cmake-3.10/Help/variable/CTEST_EXTRA_COVERAGE_GLOB.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_EXTRA_COVERAGE_GLOB.rst
rename to share/cmake-3.10/Help/variable/CTEST_EXTRA_COVERAGE_GLOB.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_GIT_COMMAND.rst b/share/cmake-3.10/Help/variable/CTEST_GIT_COMMAND.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_GIT_COMMAND.rst
rename to share/cmake-3.10/Help/variable/CTEST_GIT_COMMAND.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_GIT_INIT_SUBMODULES.rst b/share/cmake-3.10/Help/variable/CTEST_GIT_INIT_SUBMODULES.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_GIT_INIT_SUBMODULES.rst
rename to share/cmake-3.10/Help/variable/CTEST_GIT_INIT_SUBMODULES.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_GIT_UPDATE_CUSTOM.rst b/share/cmake-3.10/Help/variable/CTEST_GIT_UPDATE_CUSTOM.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_GIT_UPDATE_CUSTOM.rst
rename to share/cmake-3.10/Help/variable/CTEST_GIT_UPDATE_CUSTOM.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_GIT_UPDATE_OPTIONS.rst b/share/cmake-3.10/Help/variable/CTEST_GIT_UPDATE_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_GIT_UPDATE_OPTIONS.rst
rename to share/cmake-3.10/Help/variable/CTEST_GIT_UPDATE_OPTIONS.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_HG_COMMAND.rst b/share/cmake-3.10/Help/variable/CTEST_HG_COMMAND.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_HG_COMMAND.rst
rename to share/cmake-3.10/Help/variable/CTEST_HG_COMMAND.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_HG_UPDATE_OPTIONS.rst b/share/cmake-3.10/Help/variable/CTEST_HG_UPDATE_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_HG_UPDATE_OPTIONS.rst
rename to share/cmake-3.10/Help/variable/CTEST_HG_UPDATE_OPTIONS.rst
diff --git a/share/cmake-3.10/Help/variable/CTEST_LABELS_FOR_SUBPROJECTS.rst b/share/cmake-3.10/Help/variable/CTEST_LABELS_FOR_SUBPROJECTS.rst
new file mode 100644
index 0000000..959596b
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CTEST_LABELS_FOR_SUBPROJECTS.rst
@@ -0,0 +1,5 @@
+CTEST_LABELS_FOR_SUBPROJECTS
+----------------------------
+
+Specify the CTest ``LabelsForSubprojects`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/share/cmake-3.6/Help/variable/CTEST_MEMORYCHECK_COMMAND.rst b/share/cmake-3.10/Help/variable/CTEST_MEMORYCHECK_COMMAND.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_MEMORYCHECK_COMMAND.rst
rename to share/cmake-3.10/Help/variable/CTEST_MEMORYCHECK_COMMAND.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_MEMORYCHECK_COMMAND_OPTIONS.rst b/share/cmake-3.10/Help/variable/CTEST_MEMORYCHECK_COMMAND_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_MEMORYCHECK_COMMAND_OPTIONS.rst
rename to share/cmake-3.10/Help/variable/CTEST_MEMORYCHECK_COMMAND_OPTIONS.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_MEMORYCHECK_SANITIZER_OPTIONS.rst b/share/cmake-3.10/Help/variable/CTEST_MEMORYCHECK_SANITIZER_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_MEMORYCHECK_SANITIZER_OPTIONS.rst
rename to share/cmake-3.10/Help/variable/CTEST_MEMORYCHECK_SANITIZER_OPTIONS.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_MEMORYCHECK_SUPPRESSIONS_FILE.rst b/share/cmake-3.10/Help/variable/CTEST_MEMORYCHECK_SUPPRESSIONS_FILE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_MEMORYCHECK_SUPPRESSIONS_FILE.rst
rename to share/cmake-3.10/Help/variable/CTEST_MEMORYCHECK_SUPPRESSIONS_FILE.rst
diff --git a/share/cmake-3.10/Help/variable/CTEST_MEMORYCHECK_TYPE.rst b/share/cmake-3.10/Help/variable/CTEST_MEMORYCHECK_TYPE.rst
new file mode 100644
index 0000000..b8b4c30
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/CTEST_MEMORYCHECK_TYPE.rst
@@ -0,0 +1,8 @@
+CTEST_MEMORYCHECK_TYPE
+----------------------
+
+Specify the CTest ``MemoryCheckType`` setting
+in a :manual:`ctest(1)` dashboard client script.
+Valid values are ``Valgrind``, ``Purify``, ``BoundsChecker``, and
+``ThreadSanitizer``, ``AddressSanitizer``, ``LeakSanitizer``, ``MemorySanitizer``, and
+``UndefinedBehaviorSanitizer``.
diff --git a/share/cmake-3.6/Help/variable/CTEST_NIGHTLY_START_TIME.rst b/share/cmake-3.10/Help/variable/CTEST_NIGHTLY_START_TIME.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_NIGHTLY_START_TIME.rst
rename to share/cmake-3.10/Help/variable/CTEST_NIGHTLY_START_TIME.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_P4_CLIENT.rst b/share/cmake-3.10/Help/variable/CTEST_P4_CLIENT.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_P4_CLIENT.rst
rename to share/cmake-3.10/Help/variable/CTEST_P4_CLIENT.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_P4_COMMAND.rst b/share/cmake-3.10/Help/variable/CTEST_P4_COMMAND.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_P4_COMMAND.rst
rename to share/cmake-3.10/Help/variable/CTEST_P4_COMMAND.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_P4_OPTIONS.rst b/share/cmake-3.10/Help/variable/CTEST_P4_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_P4_OPTIONS.rst
rename to share/cmake-3.10/Help/variable/CTEST_P4_OPTIONS.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_P4_UPDATE_OPTIONS.rst b/share/cmake-3.10/Help/variable/CTEST_P4_UPDATE_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_P4_UPDATE_OPTIONS.rst
rename to share/cmake-3.10/Help/variable/CTEST_P4_UPDATE_OPTIONS.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_SCP_COMMAND.rst b/share/cmake-3.10/Help/variable/CTEST_SCP_COMMAND.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_SCP_COMMAND.rst
rename to share/cmake-3.10/Help/variable/CTEST_SCP_COMMAND.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_SITE.rst b/share/cmake-3.10/Help/variable/CTEST_SITE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_SITE.rst
rename to share/cmake-3.10/Help/variable/CTEST_SITE.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_SOURCE_DIRECTORY.rst b/share/cmake-3.10/Help/variable/CTEST_SOURCE_DIRECTORY.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_SOURCE_DIRECTORY.rst
rename to share/cmake-3.10/Help/variable/CTEST_SOURCE_DIRECTORY.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_SVN_COMMAND.rst b/share/cmake-3.10/Help/variable/CTEST_SVN_COMMAND.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_SVN_COMMAND.rst
rename to share/cmake-3.10/Help/variable/CTEST_SVN_COMMAND.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_SVN_OPTIONS.rst b/share/cmake-3.10/Help/variable/CTEST_SVN_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_SVN_OPTIONS.rst
rename to share/cmake-3.10/Help/variable/CTEST_SVN_OPTIONS.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_SVN_UPDATE_OPTIONS.rst b/share/cmake-3.10/Help/variable/CTEST_SVN_UPDATE_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_SVN_UPDATE_OPTIONS.rst
rename to share/cmake-3.10/Help/variable/CTEST_SVN_UPDATE_OPTIONS.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_TEST_LOAD.rst b/share/cmake-3.10/Help/variable/CTEST_TEST_LOAD.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_TEST_LOAD.rst
rename to share/cmake-3.10/Help/variable/CTEST_TEST_LOAD.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_TEST_TIMEOUT.rst b/share/cmake-3.10/Help/variable/CTEST_TEST_TIMEOUT.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_TEST_TIMEOUT.rst
rename to share/cmake-3.10/Help/variable/CTEST_TEST_TIMEOUT.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_TRIGGER_SITE.rst b/share/cmake-3.10/Help/variable/CTEST_TRIGGER_SITE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_TRIGGER_SITE.rst
rename to share/cmake-3.10/Help/variable/CTEST_TRIGGER_SITE.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_UPDATE_COMMAND.rst b/share/cmake-3.10/Help/variable/CTEST_UPDATE_COMMAND.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_UPDATE_COMMAND.rst
rename to share/cmake-3.10/Help/variable/CTEST_UPDATE_COMMAND.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_UPDATE_OPTIONS.rst b/share/cmake-3.10/Help/variable/CTEST_UPDATE_OPTIONS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_UPDATE_OPTIONS.rst
rename to share/cmake-3.10/Help/variable/CTEST_UPDATE_OPTIONS.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_UPDATE_VERSION_ONLY.rst b/share/cmake-3.10/Help/variable/CTEST_UPDATE_VERSION_ONLY.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_UPDATE_VERSION_ONLY.rst
rename to share/cmake-3.10/Help/variable/CTEST_UPDATE_VERSION_ONLY.rst
diff --git a/share/cmake-3.6/Help/variable/CTEST_USE_LAUNCHERS.rst b/share/cmake-3.10/Help/variable/CTEST_USE_LAUNCHERS.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CTEST_USE_LAUNCHERS.rst
rename to share/cmake-3.10/Help/variable/CTEST_USE_LAUNCHERS.rst
diff --git a/share/cmake-3.6/Help/variable/CYGWIN.rst b/share/cmake-3.10/Help/variable/CYGWIN.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/CYGWIN.rst
rename to share/cmake-3.10/Help/variable/CYGWIN.rst
diff --git a/share/cmake-3.6/Help/variable/ENV.rst b/share/cmake-3.10/Help/variable/ENV.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/ENV.rst
rename to share/cmake-3.10/Help/variable/ENV.rst
diff --git a/share/cmake-3.6/Help/variable/EXECUTABLE_OUTPUT_PATH.rst b/share/cmake-3.10/Help/variable/EXECUTABLE_OUTPUT_PATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/EXECUTABLE_OUTPUT_PATH.rst
rename to share/cmake-3.10/Help/variable/EXECUTABLE_OUTPUT_PATH.rst
diff --git a/share/cmake-3.6/Help/variable/GHS-MULTI.rst b/share/cmake-3.10/Help/variable/GHS-MULTI.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/GHS-MULTI.rst
rename to share/cmake-3.10/Help/variable/GHS-MULTI.rst
diff --git a/share/cmake-3.6/Help/variable/LIBRARY_OUTPUT_PATH.rst b/share/cmake-3.10/Help/variable/LIBRARY_OUTPUT_PATH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/LIBRARY_OUTPUT_PATH.rst
rename to share/cmake-3.10/Help/variable/LIBRARY_OUTPUT_PATH.rst
diff --git a/share/cmake-3.6/Help/variable/MINGW.rst b/share/cmake-3.10/Help/variable/MINGW.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/MINGW.rst
rename to share/cmake-3.10/Help/variable/MINGW.rst
diff --git a/share/cmake-3.10/Help/variable/MSVC.rst b/share/cmake-3.10/Help/variable/MSVC.rst
new file mode 100644
index 0000000..22a087a
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/MSVC.rst
@@ -0,0 +1,8 @@
+MSVC
+----
+
+``True`` when using Microsoft Visual C++.
+
+Set to ``true`` when the compiler is some version of Microsoft Visual C++.
+
+See also the :variable:`MSVC_VERSION` variable.
diff --git a/share/cmake-3.10/Help/variable/MSVC10.rst b/share/cmake-3.10/Help/variable/MSVC10.rst
new file mode 100644
index 0000000..55c6337
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/MSVC10.rst
@@ -0,0 +1,7 @@
+MSVC10
+------
+
+Discouraged.  Use the :variable:`MSVC_VERSION` variable instead.
+
+``True`` when using the Microsoft Visual Studio ``v100`` toolset
+(``cl`` version 16) or another compiler that simulates it.
diff --git a/share/cmake-3.10/Help/variable/MSVC11.rst b/share/cmake-3.10/Help/variable/MSVC11.rst
new file mode 100644
index 0000000..17943dc
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/MSVC11.rst
@@ -0,0 +1,7 @@
+MSVC11
+------
+
+Discouraged.  Use the :variable:`MSVC_VERSION` variable instead.
+
+``True`` when using the Microsoft Visual Studio ``v110`` toolset
+(``cl`` version 17) or another compiler that simulates it.
diff --git a/share/cmake-3.10/Help/variable/MSVC12.rst b/share/cmake-3.10/Help/variable/MSVC12.rst
new file mode 100644
index 0000000..a524fab
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/MSVC12.rst
@@ -0,0 +1,7 @@
+MSVC12
+------
+
+Discouraged.  Use the :variable:`MSVC_VERSION` variable instead.
+
+``True`` when using the Microsoft Visual Studio ``v120`` toolset
+(``cl`` version 18) or another compiler that simulates it.
diff --git a/share/cmake-3.10/Help/variable/MSVC14.rst b/share/cmake-3.10/Help/variable/MSVC14.rst
new file mode 100644
index 0000000..79e0c10
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/MSVC14.rst
@@ -0,0 +1,7 @@
+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.10/Help/variable/MSVC60.rst b/share/cmake-3.10/Help/variable/MSVC60.rst
new file mode 100644
index 0000000..14164bf
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/MSVC60.rst
@@ -0,0 +1,8 @@
+MSVC60
+------
+
+Discouraged.  Use the :variable:`MSVC_VERSION` variable instead.
+
+``True`` when using Microsoft Visual C++ 6.0.
+
+Set to ``true`` when the compiler is version 6.0 of Microsoft Visual C++.
diff --git a/share/cmake-3.10/Help/variable/MSVC70.rst b/share/cmake-3.10/Help/variable/MSVC70.rst
new file mode 100644
index 0000000..ed3b0bb
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/MSVC70.rst
@@ -0,0 +1,8 @@
+MSVC70
+------
+
+Discouraged.  Use the :variable:`MSVC_VERSION` variable instead.
+
+``True`` when using Microsoft Visual C++ 7.0.
+
+Set to ``true`` when the compiler is version 7.0 of Microsoft Visual C++.
diff --git a/share/cmake-3.10/Help/variable/MSVC71.rst b/share/cmake-3.10/Help/variable/MSVC71.rst
new file mode 100644
index 0000000..0237592
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/MSVC71.rst
@@ -0,0 +1,8 @@
+MSVC71
+------
+
+Discouraged.  Use the :variable:`MSVC_VERSION` variable instead.
+
+``True`` when using Microsoft Visual C++ 7.1.
+
+Set to ``true`` when the compiler is version 7.1 of Microsoft Visual C++.
diff --git a/share/cmake-3.10/Help/variable/MSVC80.rst b/share/cmake-3.10/Help/variable/MSVC80.rst
new file mode 100644
index 0000000..1533218
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/MSVC80.rst
@@ -0,0 +1,7 @@
+MSVC80
+------
+
+Discouraged.  Use the :variable:`MSVC_VERSION` variable instead.
+
+``True`` when using the Microsoft Visual Studio ``v80`` toolset
+(``cl`` version 14) or another compiler that simulates it.
diff --git a/share/cmake-3.10/Help/variable/MSVC90.rst b/share/cmake-3.10/Help/variable/MSVC90.rst
new file mode 100644
index 0000000..4981ecf
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/MSVC90.rst
@@ -0,0 +1,7 @@
+MSVC90
+------
+
+Discouraged.  Use the :variable:`MSVC_VERSION` variable instead.
+
+``True`` when using the Microsoft Visual Studio ``v90`` toolset
+(``cl`` version 15) or another compiler that simulates it.
diff --git a/share/cmake-3.6/Help/variable/MSVC_IDE.rst b/share/cmake-3.10/Help/variable/MSVC_IDE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/MSVC_IDE.rst
rename to share/cmake-3.10/Help/variable/MSVC_IDE.rst
diff --git a/share/cmake-3.10/Help/variable/MSVC_VERSION.rst b/share/cmake-3.10/Help/variable/MSVC_VERSION.rst
new file mode 100644
index 0000000..0a3a7a6
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/MSVC_VERSION.rst
@@ -0,0 +1,19 @@
+MSVC_VERSION
+------------
+
+The version of Microsoft Visual C/C++ being used if any.
+
+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)
+
+See also the  :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
diff --git a/share/cmake-3.6/Help/variable/PROJECT-NAME_BINARY_DIR.rst b/share/cmake-3.10/Help/variable/PROJECT-NAME_BINARY_DIR.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/PROJECT-NAME_BINARY_DIR.rst
rename to share/cmake-3.10/Help/variable/PROJECT-NAME_BINARY_DIR.rst
diff --git a/share/cmake-3.6/Help/variable/PROJECT-NAME_SOURCE_DIR.rst b/share/cmake-3.10/Help/variable/PROJECT-NAME_SOURCE_DIR.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/PROJECT-NAME_SOURCE_DIR.rst
rename to share/cmake-3.10/Help/variable/PROJECT-NAME_SOURCE_DIR.rst
diff --git a/share/cmake-3.6/Help/variable/PROJECT-NAME_VERSION.rst b/share/cmake-3.10/Help/variable/PROJECT-NAME_VERSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/PROJECT-NAME_VERSION.rst
rename to share/cmake-3.10/Help/variable/PROJECT-NAME_VERSION.rst
diff --git a/share/cmake-3.6/Help/variable/PROJECT-NAME_VERSION_MAJOR.rst b/share/cmake-3.10/Help/variable/PROJECT-NAME_VERSION_MAJOR.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/PROJECT-NAME_VERSION_MAJOR.rst
rename to share/cmake-3.10/Help/variable/PROJECT-NAME_VERSION_MAJOR.rst
diff --git a/share/cmake-3.6/Help/variable/PROJECT-NAME_VERSION_MINOR.rst b/share/cmake-3.10/Help/variable/PROJECT-NAME_VERSION_MINOR.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/PROJECT-NAME_VERSION_MINOR.rst
rename to share/cmake-3.10/Help/variable/PROJECT-NAME_VERSION_MINOR.rst
diff --git a/share/cmake-3.6/Help/variable/PROJECT-NAME_VERSION_PATCH.rst b/share/cmake-3.10/Help/variable/PROJECT-NAME_VERSION_PATCH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/PROJECT-NAME_VERSION_PATCH.rst
rename to share/cmake-3.10/Help/variable/PROJECT-NAME_VERSION_PATCH.rst
diff --git a/share/cmake-3.6/Help/variable/PROJECT-NAME_VERSION_TWEAK.rst b/share/cmake-3.10/Help/variable/PROJECT-NAME_VERSION_TWEAK.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/PROJECT-NAME_VERSION_TWEAK.rst
rename to share/cmake-3.10/Help/variable/PROJECT-NAME_VERSION_TWEAK.rst
diff --git a/share/cmake-3.6/Help/variable/PROJECT_BINARY_DIR.rst b/share/cmake-3.10/Help/variable/PROJECT_BINARY_DIR.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/PROJECT_BINARY_DIR.rst
rename to share/cmake-3.10/Help/variable/PROJECT_BINARY_DIR.rst
diff --git a/share/cmake-3.10/Help/variable/PROJECT_DESCRIPTION.rst b/share/cmake-3.10/Help/variable/PROJECT_DESCRIPTION.rst
new file mode 100644
index 0000000..05ede8f
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/PROJECT_DESCRIPTION.rst
@@ -0,0 +1,6 @@
+PROJECT_DESCRIPTION
+-------------------
+
+Short project description given to the project command.
+
+This is the description given to the most recent :command:`project` command.
diff --git a/share/cmake-3.6/Help/variable/PROJECT_NAME.rst b/share/cmake-3.10/Help/variable/PROJECT_NAME.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/PROJECT_NAME.rst
rename to share/cmake-3.10/Help/variable/PROJECT_NAME.rst
diff --git a/share/cmake-3.6/Help/variable/PROJECT_SOURCE_DIR.rst b/share/cmake-3.10/Help/variable/PROJECT_SOURCE_DIR.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/PROJECT_SOURCE_DIR.rst
rename to share/cmake-3.10/Help/variable/PROJECT_SOURCE_DIR.rst
diff --git a/share/cmake-3.6/Help/variable/PROJECT_VERSION.rst b/share/cmake-3.10/Help/variable/PROJECT_VERSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/PROJECT_VERSION.rst
rename to share/cmake-3.10/Help/variable/PROJECT_VERSION.rst
diff --git a/share/cmake-3.6/Help/variable/PROJECT_VERSION_MAJOR.rst b/share/cmake-3.10/Help/variable/PROJECT_VERSION_MAJOR.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/PROJECT_VERSION_MAJOR.rst
rename to share/cmake-3.10/Help/variable/PROJECT_VERSION_MAJOR.rst
diff --git a/share/cmake-3.6/Help/variable/PROJECT_VERSION_MINOR.rst b/share/cmake-3.10/Help/variable/PROJECT_VERSION_MINOR.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/PROJECT_VERSION_MINOR.rst
rename to share/cmake-3.10/Help/variable/PROJECT_VERSION_MINOR.rst
diff --git a/share/cmake-3.6/Help/variable/PROJECT_VERSION_PATCH.rst b/share/cmake-3.10/Help/variable/PROJECT_VERSION_PATCH.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/PROJECT_VERSION_PATCH.rst
rename to share/cmake-3.10/Help/variable/PROJECT_VERSION_PATCH.rst
diff --git a/share/cmake-3.6/Help/variable/PROJECT_VERSION_TWEAK.rst b/share/cmake-3.10/Help/variable/PROJECT_VERSION_TWEAK.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/PROJECT_VERSION_TWEAK.rst
rename to share/cmake-3.10/Help/variable/PROJECT_VERSION_TWEAK.rst
diff --git a/share/cmake-3.10/Help/variable/UNIX.rst b/share/cmake-3.10/Help/variable/UNIX.rst
new file mode 100644
index 0000000..49d8668
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/UNIX.rst
@@ -0,0 +1,7 @@
+UNIX
+----
+
+Set to ``True`` when the target system is UNIX or UNIX-like
+(e.g. :variable:`APPLE` and :variable:`CYGWIN`).  The
+:variable:`CMAKE_SYSTEM_NAME` variable should be queried if
+a more specific understanding of the target system is required.
diff --git a/share/cmake-3.10/Help/variable/WIN32.rst b/share/cmake-3.10/Help/variable/WIN32.rst
new file mode 100644
index 0000000..78ab772
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/WIN32.rst
@@ -0,0 +1,4 @@
+WIN32
+-----
+
+Set to ``True`` when the target system is Windows, including Win64.
diff --git a/share/cmake-3.6/Help/variable/WINCE.rst b/share/cmake-3.10/Help/variable/WINCE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/WINCE.rst
rename to share/cmake-3.10/Help/variable/WINCE.rst
diff --git a/share/cmake-3.6/Help/variable/WINDOWS_PHONE.rst b/share/cmake-3.10/Help/variable/WINDOWS_PHONE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/WINDOWS_PHONE.rst
rename to share/cmake-3.10/Help/variable/WINDOWS_PHONE.rst
diff --git a/share/cmake-3.6/Help/variable/WINDOWS_STORE.rst b/share/cmake-3.10/Help/variable/WINDOWS_STORE.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/WINDOWS_STORE.rst
rename to share/cmake-3.10/Help/variable/WINDOWS_STORE.rst
diff --git a/share/cmake-3.10/Help/variable/XCODE.rst b/share/cmake-3.10/Help/variable/XCODE.rst
new file mode 100644
index 0000000..99f20fb
--- /dev/null
+++ b/share/cmake-3.10/Help/variable/XCODE.rst
@@ -0,0 +1,4 @@
+XCODE
+-----
+
+``True`` when using :generator:`Xcode` generator.
diff --git a/share/cmake-3.6/Help/variable/XCODE_VERSION.rst b/share/cmake-3.10/Help/variable/XCODE_VERSION.rst
similarity index 100%
rename from share/cmake-3.6/Help/variable/XCODE_VERSION.rst
rename to share/cmake-3.10/Help/variable/XCODE_VERSION.rst
diff --git a/share/cmake-3.10/Modules/AddFileDependencies.cmake b/share/cmake-3.10/Modules/AddFileDependencies.cmake
new file mode 100644
index 0000000..fdd8432
--- /dev/null
+++ b/share/cmake-3.10/Modules/AddFileDependencies.cmake
@@ -0,0 +1,23 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#.rst:
+# AddFileDependencies
+# -------------------
+#
+# ADD_FILE_DEPENDENCIES(source_file depend_files...)
+#
+# Adds the given files as dependencies to source_file
+
+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.6/Modules/AndroidNdkGdb.cmake b/share/cmake-3.10/Modules/AndroidNdkGdb.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/AndroidNdkGdb.cmake
rename to share/cmake-3.10/Modules/AndroidNdkGdb.cmake
diff --git a/share/cmake-3.6/Modules/AndroidNdkModules.cmake b/share/cmake-3.10/Modules/AndroidNdkModules.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/AndroidNdkModules.cmake
rename to share/cmake-3.10/Modules/AndroidNdkModules.cmake
diff --git a/share/cmake-3.10/Modules/AndroidTestUtilities.cmake b/share/cmake-3.10/Modules/AndroidTestUtilities.cmake
new file mode 100644
index 0000000..62d04f3
--- /dev/null
+++ b/share/cmake-3.10/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
+------------------------
+
+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
+
+  ::
+
+    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)
+
+set(_AndroidTestUtilities_SELF_DIR "${CMAKE_CURRENT_LIST_DIR}")
+
+# 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 ${_AndroidTestUtilities_SELF_DIR}/AndroidTestUtilities/PushToAndroidDevice.cmake)
+  endif()
+endfunction()
diff --git a/share/cmake-3.10/Modules/AndroidTestUtilities/PushToAndroidDevice.cmake b/share/cmake-3.10/Modules/AndroidTestUtilities/PushToAndroidDevice.cmake
new file mode 100644
index 0000000..04529b1
--- /dev/null
+++ b/share/cmake-3.10/Modules/AndroidTestUtilities/PushToAndroidDevice.cmake
@@ -0,0 +1,176 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+# This function handles pushing all of the test files needed to the device.
+# It places the data files in the object store and makes links to them from
+# the appropriate directories.
+#
+# This function accepts the following named parameters:
+# DIRS          : one or more directories needed for testing.
+# FILES         : one or more files needed for testing.
+# LIBS          : one or more libraries needed for testing.
+# DIRS_DEST     : specify where the directories should be installed.
+# FILES_DEST    : specify where the files should be installed.
+# LIBS_DEST     : specify where the libraries should be installed.
+# DEV_OBJ_STORE : specify where the actual data files should be placed.
+# DEV_TEST_DIR  : specify the root file for the module test directory.
+# The DEV_OBJ_STORE and DEV_TEST_DIR variables are required.
+
+# 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_push_test_files_to_device)
+
+  # The functions in the module need the adb executable.
+  find_program(adb_executable adb)
+  if(NOT adb_executable)
+    message(FATAL_ERROR "could not find adb")
+  endif()
+
+  function(execute_adb_command)
+    execute_process(COMMAND ${adb_executable} ${ARGN} RESULT_VARIABLE res_var OUTPUT_VARIABLE out_var ERROR_VARIABLE err_var)
+    set(out_var ${out_var} PARENT_SCOPE)
+    if(res_var)
+      string(REGEX REPLACE ";" " " com "${ARGN}")
+      message(FATAL_ERROR "Error occured during adb command: adb ${com}\nError: ${err_var}.")
+    endif()
+  endfunction()
+
+  # Checks to make sure that a given file exists on the device. If it does,
+  # if(file_exists) will return true.
+  macro(check_device_file_exists device_file file_exists)
+    set(${file_exists} "")
+    execute_process(
+      COMMAND ${adb_executable} shell ls ${device_file}
+      OUTPUT_VARIABLE out_var ERROR_VARIABLE out_var)
+    if(NOT out_var) # when a directory exists but is empty the output is empty
+      set(${file_exists} "YES")
+    else()
+      string(FIND ${out_var} "No such file or directory" no_file_exists)
+      if(${no_file_exists} STREQUAL "-1") # -1 means the file exists
+        set(${file_exists} "YES")
+      endif()
+    endif()
+  endmacro()
+
+  # Checks to see if a filename matches a regex.
+  function(filename_regex filename reg_ex)
+    string(REGEX MATCH ${reg_ex} filename_match ${filename})
+    set(filename_match ${filename_match} PARENT_SCOPE)
+  endfunction()
+
+  # If a file with given name exists in the CMAKE_BINARY_DIR then use that file.
+  # Otherwise use the file with root in CMAKE_CURRENT_SOURCE_DIR.
+  macro(set_absolute_path relative_path absolute_path)
+    set(${absolute_path} ${arg_src_dir}/${relative_path})
+    if(EXISTS ${CMAKE_BINARY_DIR}/${relative_path})
+      set(${absolute_path} ${CMAKE_BINARY_DIR}/${relative_path})
+    endif()
+    if(NOT EXISTS ${${absolute_path}})
+      if(EXISTS ${relative_path})
+        set(${absolute_path} ${relative_path})
+      else()
+        message(FATAL_ERROR "Cannot find file for specified path: ${relative_path}")
+      endif()
+    endif()
+  endmacro()
+
+  # This function pushes the data into the device object store and
+  # creates a link to that data file in a specified location.
+  #
+  # This function requires the following un-named parameters:
+  # data_path        : absolute path to data to load into dev obj store.
+  # dev_object_store : absolute path to the device object store directory.
+  # link_origin      : absolute path to the origin of the link to the dev obj store data file.
+  function(push_and_link data_path dev_object_store link_origin)
+    FILE(SHA1 ${data_path} hash_val)
+    set(obj_store_dst ${dev_object_store}/${hash_val})
+    check_device_file_exists(${obj_store_dst} obj_store_file_exists)
+    # TODO: Verify that the object store file is indeed hashed correctly. Could use md5.
+    if(NOT obj_store_file_exists)
+      execute_adb_command(push ${data_path} ${obj_store_dst})
+    endif()
+    check_device_file_exists(${link_origin} link_exists)
+    if(link_exists)
+      execute_adb_command(shell rm -f ${link_origin})
+    endif()
+    foreach(ex ${arg_no_link_regex})
+      filename_regex(${data_path} ${ex})
+      LIST(APPEND match_ex ${filename_match})
+    endforeach()
+    if(match_ex)
+      execute_adb_command(shell cp ${obj_store_dst} ${link_origin})
+    else()
+      execute_adb_command(shell ln -s ${obj_store_dst} ${link_origin})
+    endif()
+  endfunction()
+
+  #----------------------------------------------------------------------------
+  #--------------------Beginning of actual function----------------------------
+  #----------------------------------------------------------------------------
+  set(oneValueArgs FILES_DEST LIBS_DEST DEV_TEST_DIR DEV_OBJ_STORE)
+  set(multiValueArgs FILES LIBS)
+  cmake_parse_arguments(_ptd "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+
+  # Setup of object store and test dir.
+  check_device_file_exists(${_ptd_DEV_OBJ_STORE} dev_obj_store_exists)
+  if(NOT dev_obj_store_exists)
+    execute_adb_command(shell mkdir -p ${_ptd_DEV_OBJ_STORE})
+  endif()
+  check_device_file_exists(${_ptd_DEV_TEST_DIR} test_dir_exists)
+  if(test_dir_exists)
+    # This is protected in the SetupProjectTests module.
+    execute_adb_command(shell rm -r ${_ptd_DEV_TEST_DIR})
+  endif()
+  execute_adb_command(shell mkdir -p ${_ptd_DEV_TEST_DIR})
+
+  # Looping over the various types of test data possible.
+  foreach(TYPE ${multiValueArgs})
+    if(_ptd_${TYPE})
+
+      # determine if the data type destination has been explicitly specified.
+      if(_ptd_${TYPE}_DEST)
+        set(dest ${_ptd_${TYPE}_DEST})
+      else()
+        if(${TYPE} STREQUAL LIBS)
+          set(dest ${_ptd_DEV_TEST_DIR}/lib)
+        else()
+          set(dest ${_ptd_DEV_TEST_DIR})
+        endif()
+      endif()
+      execute_adb_command(shell mkdir -p ${dest})
+
+      # Loop over the files passed in
+      foreach(relative_path ${_ptd_${TYPE}})
+        # The absolute path can be through the source directory or the build directory.
+        # If the file/dir exists in the build directory that version is chosen.
+        set_absolute_path(${relative_path} absolute_path)
+        # Need to transfer all data files in the data directories to the device
+        # except those explicitly ignored.
+        if(${TYPE} STREQUAL FILES)
+          get_filename_component(file_dir ${relative_path} DIRECTORY)
+          # dest was determined earlier, relative_path is a dir, file is path from relative path to a data
+          set(cur_dest ${dest}/${relative_path})
+          set(on_dev_dir ${dest}/${file_dir})
+          execute_adb_command(shell mkdir -p ${on_dev_dir})
+          if(IS_SYMLINK ${absolute_path})
+            get_filename_component(real_data_origin ${absolute_path} REALPATH)
+            push_and_link(${real_data_origin} ${_ptd_DEV_OBJ_STORE} ${cur_dest})
+          else()
+            push_and_link(${absolute_path} ${_ptd_DEV_OBJ_STORE} ${cur_dest})
+          endif()
+        else() # LIBS
+          execute_adb_command(push ${absolute_path} ${dest})
+        endif()
+      endforeach()
+    endif()
+  endforeach()
+endfunction()
+
+android_push_test_files_to_device(
+  FILES_DEST ${arg_files_dest}
+  LIBS_DEST ${arg_libs_dest}
+  DEV_TEST_DIR ${arg_dev_test_dir}
+  DEV_OBJ_STORE ${arg_dev_obj_store}
+  FILES ${arg_files}
+  LIBS ${arg_libs}
+  )
diff --git a/share/cmake-3.10/Modules/AutogenInfo.cmake.in b/share/cmake-3.10/Modules/AutogenInfo.cmake.in
new file mode 100644
index 0000000..7f4b398
--- /dev/null
+++ b/share/cmake-3.10/Modules/AutogenInfo.cmake.in
@@ -0,0 +1,37 @@
+# Meta
+set(AM_MULTI_CONFIG @_multi_config@)
+# Directories and files
+set(AM_CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@/")
+set(AM_CMAKE_SOURCE_DIR "@CMAKE_SOURCE_DIR@/")
+set(AM_CMAKE_CURRENT_SOURCE_DIR "@CMAKE_CURRENT_SOURCE_DIR@/")
+set(AM_CMAKE_CURRENT_BINARY_DIR "@CMAKE_CURRENT_BINARY_DIR@/")
+set(AM_CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE "@CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE@")
+set(AM_BUILD_DIR @_build_dir@)
+set(AM_SOURCES @_sources@)
+set(AM_HEADERS @_headers@)
+# Qt environment
+set(AM_QT_VERSION_MAJOR @_qt_version_major@)
+set(AM_QT_VERSION_MINOR @_qt_version_minor@)
+set(AM_QT_MOC_EXECUTABLE @_qt_moc_executable@)
+set(AM_QT_UIC_EXECUTABLE @_qt_uic_executable@)
+set(AM_QT_RCC_EXECUTABLE @_qt_rcc_executable@)
+# MOC settings
+set(AM_MOC_SKIP @_moc_skip@)
+set(AM_MOC_DEFINITIONS @_moc_compile_defs@)
+set(AM_MOC_INCLUDES @_moc_include_dirs@)
+set(AM_MOC_OPTIONS @_moc_options@)
+set(AM_MOC_RELAXED_MODE @_moc_relaxed_mode@)
+set(AM_MOC_MACRO_NAMES @_moc_macro_names@)
+set(AM_MOC_DEPEND_FILTERS @_moc_depend_filters@)
+set(AM_MOC_PREDEFS_CMD @_moc_predefs_cmd@)
+# UIC settings
+set(AM_UIC_SKIP @_uic_skip@)
+set(AM_UIC_TARGET_OPTIONS @_uic_target_options@)
+set(AM_UIC_OPTIONS_FILES @_qt_uic_options_files@)
+set(AM_UIC_OPTIONS_OPTIONS @_qt_uic_options_options@)
+set(AM_UIC_SEARCH_PATHS @_uic_search_paths@)
+# RCC settings
+set(AM_RCC_SOURCES @_rcc_files@)
+set(AM_RCC_BUILDS @_rcc_builds@)
+set(AM_RCC_OPTIONS @_rcc_options@)
+set(AM_RCC_INPUTS @_rcc_inputs@)
diff --git a/share/cmake-3.6/Modules/BasicConfigVersion-AnyNewerVersion.cmake.in b/share/cmake-3.10/Modules/BasicConfigVersion-AnyNewerVersion.cmake.in
similarity index 100%
rename from share/cmake-3.6/Modules/BasicConfigVersion-AnyNewerVersion.cmake.in
rename to share/cmake-3.10/Modules/BasicConfigVersion-AnyNewerVersion.cmake.in
diff --git a/share/cmake-3.6/Modules/BasicConfigVersion-ExactVersion.cmake.in b/share/cmake-3.10/Modules/BasicConfigVersion-ExactVersion.cmake.in
similarity index 100%
rename from share/cmake-3.6/Modules/BasicConfigVersion-ExactVersion.cmake.in
rename to share/cmake-3.10/Modules/BasicConfigVersion-ExactVersion.cmake.in
diff --git a/share/cmake-3.6/Modules/BasicConfigVersion-SameMajorVersion.cmake.in b/share/cmake-3.10/Modules/BasicConfigVersion-SameMajorVersion.cmake.in
similarity index 100%
rename from share/cmake-3.6/Modules/BasicConfigVersion-SameMajorVersion.cmake.in
rename to share/cmake-3.10/Modules/BasicConfigVersion-SameMajorVersion.cmake.in
diff --git a/share/cmake-3.10/Modules/BundleUtilities.cmake b/share/cmake-3.10/Modules/BundleUtilities.cmake
new file mode 100644
index 0000000..121a8f0
--- /dev/null
+++ b/share/cmake-3.10/Modules/BundleUtilities.cmake
@@ -0,0 +1,1108 @@
+# 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:
+#
+# ::
+#
+#    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.
+#
+# ::
+#
+#   FIXUP_BUNDLE(<app> <libs> <dirs>)
+#
+# Fix up a 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")
+#
+# ::
+#
+#   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>...
+#
+# ::
+#
+#   VERIFY_APP(<app>)
+#
+# Verifies that an application <app> appears valid based on running
+# analysis tools on it.  Calls "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")
+#
+# ::
+#
+#   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.
+#
+# ::
+#
+#   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.
+#
+# ::
+#
+#   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>
+#
+# ::
+#
+#   GET_BUNDLE_ALL_EXECUTABLES(<bundle> <exes_var>)
+#
+# Scans the given bundle recursively for all executable files and
+# accumulates them into a variable.
+#
+# ::
+#
+#   GET_ITEM_KEY(<item> <key_var>)
+#
+# Given a file (item) name, generate a 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.
+#
+# ::
+#
+#   CLEAR_BUNDLE_KEYS(<keys_var>)
+#
+# Loop over the 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.
+#
+# ::
+#
+#   SET_BUNDLE_KEY_VALUES(<keys_var> <context> <item> <exepath> <dirs>
+#                         <copyflag> [<rpaths>])
+#
+# Add a key to the list (if necessary) for the given item.  If added,
+# also set all the variables associated with that key.
+#
+# ::
+#
+#   GET_BUNDLE_KEYS(<app> <libs> <dirs> <keys_var>)
+#
+# Loop over all the executable and library files within the 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")
+#
+# ::
+#
+#   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.
+#
+# ::
+#
+#   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.
+#
+# ::
+#
+#   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.
+#
+# ::
+#
+#   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")
+#
+# ::
+#
+#   VERIFY_BUNDLE_SYMLINKS(<bundle> <result_var> <info_var>)
+#
+# Verifies that any symlinks found in the 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.
+
+# The functions defined in this file depend on the get_prerequisites function
+# (and possibly others) found in:
+#
+get_filename_component(BundleUtilities_cmake_dir "${CMAKE_CURRENT_LIST_FILE}" PATH)
+include("${BundleUtilities_cmake_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
+      )
+    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 "")
+      set(ignoreFile FALSE)
+      get_filename_component(prereq_filename ${lib} NAME)
+      if(NOT "${CFG_IGNORE_ITEM}" STREQUAL "" )
+        foreach(item ${CFG_IGNORE_ITEM})
+            if("${item}" STREQUAL "${prereq_filename}")
+              set(ignoreFile TRUE)
+            endif()
+        endforeach()
+      endif()
+
+      if(NOT ignoreFile)
+        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 "")
+      set(ignoreFile FALSE)
+      get_filename_component(prereq_filename ${exe} NAME)
+      if(NOT "${CFG_IGNORE_ITEM}" STREQUAL "" )
+        foreach(item ${CFG_IGNORE_ITEM})
+            if("${item}" STREQUAL "${prereq_filename}")
+              set(ignoreFile TRUE)
+            endif()
+        endforeach()
+      endif()
+
+      if(NOT ignoreFile)
+        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}")
+    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()
+
+  # Only if install_name_tool supports -delete_rpath:
+  #
+  execute_process(COMMAND 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 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 "")
+      set(ignoreFile FALSE)
+      get_filename_component(prereq_filename ${f} NAME)
+
+      if(NOT "${CFG_IGNORE_ITEM}" STREQUAL "" )
+        foreach(item ${CFG_IGNORE_ITEM})
+            if("${item}" STREQUAL "${prereq_filename}")
+              set(ignoreFile TRUE)
+            endif()
+        endforeach()
+      endif()
+
+      if(NOT ignoreFile)
+        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()
diff --git a/share/cmake-3.10/Modules/CMake.cmake b/share/cmake-3.10/Modules/CMake.cmake
new file mode 100644
index 0000000..caa5479
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMake.cmake
@@ -0,0 +1,7 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This file is used by cmake.cxx to compute the CMAKE_ROOT location.
+# Do not remove this file from cvs without updating cmake.cxx to look
+# for a different file.
diff --git a/share/cmake-3.10/Modules/CMakeASM-ATTInformation.cmake b/share/cmake-3.10/Modules/CMakeASM-ATTInformation.cmake
new file mode 100644
index 0000000..d1970a2
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeASM-ATTInformation.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.
+
+
+# support for AT&T syntax assemblers, e.g. GNU as
+
+set(ASM_DIALECT "-ATT")
+# *.S files are supposed to be preprocessed, so they should not be passed to
+# assembler but should be processed by gcc
+set(CMAKE_ASM${ASM_DIALECT}_SOURCE_FILE_EXTENSIONS s;asm)
+
+set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OBJECT "<CMAKE_ASM${ASM_DIALECT}_COMPILER> <INCLUDES> <FLAGS> -o <OBJECT> <SOURCE>")
+
+include(CMakeASMInformation)
+set(ASM_DIALECT)
diff --git a/share/cmake-3.10/Modules/CMakeASMCompiler.cmake.in b/share/cmake-3.10/Modules/CMakeASMCompiler.cmake.in
new file mode 100644
index 0000000..a6465f6
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeASMCompiler.cmake.in
@@ -0,0 +1,17 @@
+set(CMAKE_ASM@ASM_DIALECT@_COMPILER "@_CMAKE_ASM_COMPILER@")
+set(CMAKE_ASM@ASM_DIALECT@_COMPILER_ARG1 "@_CMAKE_ASM_COMPILER_ARG1@")
+set(CMAKE_AR "@CMAKE_AR@")
+set(CMAKE_ASM@ASM_DIALECT@_COMPILER_AR "@_CMAKE_ASM_COMPILER_AR@")
+set(CMAKE_RANLIB "@CMAKE_RANLIB@")
+set(CMAKE_ASM@ASM_DIALECT@_COMPILER_RANLIB "@_CMAKE_ASM_COMPILER_RANLIB@")
+set(CMAKE_LINKER "@CMAKE_LINKER@")
+set(CMAKE_ASM@ASM_DIALECT@_COMPILER_LOADED 1)
+set(CMAKE_ASM@ASM_DIALECT@_COMPILER_ID "@_CMAKE_ASM_COMPILER_ID@")
+set(CMAKE_ASM@ASM_DIALECT@_COMPILER_VERSION "@_CMAKE_ASM_COMPILER_VERSION@")
+set(CMAKE_ASM@ASM_DIALECT@_COMPILER_ENV_VAR "@_CMAKE_ASM_COMPILER_ENV_VAR@")
+@_SET_CMAKE_ASM_COMPILER_ARCHITECTURE_ID@
+
+set(CMAKE_ASM@ASM_DIALECT@_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_ASM@ASM_DIALECT@_LINKER_PREFERENCE 0)
+
+@CMAKE_ASM_COMPILER_CUSTOM_CODE@
diff --git a/share/cmake-3.10/Modules/CMakeASMInformation.cmake b/share/cmake-3.10/Modules/CMakeASMInformation.cmake
new file mode 100644
index 0000000..f7cf900
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeASMInformation.cmake
@@ -0,0 +1,141 @@
+# 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_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_SYSTEM_NAME}-${CMAKE_BASE_NAME}-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL)
+  endif()
+endif()
+
+include(Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID}-ASM${ASM_DIALECT} OPTIONAL  RESULT_VARIABLE _INCLUDED_FILE)
+if(NOT _INCLUDED_FILE)
+  include(Platform/${CMAKE_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}")
+
+foreach(c "" _DEBUG _RELEASE _MINSIZEREL _RELWITHDEBINFO)
+  string(STRIP "${CMAKE_ASM${ASM_DIALECT}_FLAGS${c}_INIT}" CMAKE_ASM${ASM_DIALECT}_FLAGS${c}_INIT)
+endforeach()
+
+set (CMAKE_ASM${ASM_DIALECT}_FLAGS "${CMAKE_ASM${ASM_DIALECT}_FLAGS_INIT}" CACHE STRING
+     "Flags used by the assembler during all build types.")
+
+if(NOT CMAKE_NOT_USING_CONFIG_FLAGS)
+  get_property(_GENERATOR_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
+  # default build type is none
+  if(NOT _GENERATOR_IS_MULTI_CONFIG AND NOT CMAKE_NO_BUILD_TYPE)
+    set (CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE_INIT} CACHE STRING
+      "Choose the type of build, options are: None, Debug Release RelWithDebInfo MinSizeRel.")
+  endif()
+  unset(_GENERATOR_IS_MULTI_CONFIG)
+  set (CMAKE_ASM${ASM_DIALECT}_FLAGS_DEBUG "${CMAKE_ASM${ASM_DIALECT}_FLAGS_DEBUG_INIT}" CACHE STRING
+    "Flags used by the assembler during debug builds.")
+  set (CMAKE_ASM${ASM_DIALECT}_FLAGS_MINSIZEREL "${CMAKE_ASM${ASM_DIALECT}_FLAGS_MINSIZEREL_INIT}" CACHE STRING
+    "Flags used by the assembler during release minsize builds.")
+  set (CMAKE_ASM${ASM_DIALECT}_FLAGS_RELEASE "${CMAKE_ASM${ASM_DIALECT}_FLAGS_RELEASE_INIT}" CACHE STRING
+    "Flags used by the assembler during release builds.")
+  set (CMAKE_ASM${ASM_DIALECT}_FLAGS_RELWITHDEBINFO "${CMAKE_ASM${ASM_DIALECT}_FLAGS_RELWITHDEBINFO_INIT}" CACHE STRING
+    "Flags used by the assembler during Release with Debug Info builds.")
+endif()
+
+mark_as_advanced(CMAKE_ASM${ASM_DIALECT}_FLAGS
+                 CMAKE_ASM${ASM_DIALECT}_FLAGS_DEBUG
+                 CMAKE_ASM${ASM_DIALECT}_FLAGS_MINSIZEREL
+                 CMAKE_ASM${ASM_DIALECT}_FLAGS_RELEASE
+                 CMAKE_ASM${ASM_DIALECT}_FLAGS_RELWITHDEBINFO
+                )
+
+
+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.10/Modules/CMakeASM_MASMInformation.cmake b/share/cmake-3.10/Modules/CMakeASM_MASMInformation.cmake
new file mode 100644
index 0000000..a38c114
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeASM_MASMInformation.cmake
@@ -0,0 +1,14 @@
+# 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>")
+
+include(CMakeASMInformation)
+set(ASM_DIALECT)
diff --git a/share/cmake-3.10/Modules/CMakeASM_NASMInformation.cmake b/share/cmake-3.10/Modules/CMakeASM_NASMInformation.cmake
new file mode 100644
index 0000000..1e3c608
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeASM_NASMInformation.cmake
@@ -0,0 +1,36 @@
+# 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(CMAKE_C_SIZEOF_DATA_PTR EQUAL 8)
+      set(CMAKE_ASM_NASM_OBJECT_FORMAT win64)
+    else()
+      set(CMAKE_ASM_NASM_OBJECT_FORMAT win32)
+    endif()
+  elseif(APPLE)
+    if(CMAKE_C_SIZEOF_DATA_PTR EQUAL 8)
+      set(CMAKE_ASM_NASM_OBJECT_FORMAT macho64)
+    else()
+      set(CMAKE_ASM_NASM_OBJECT_FORMAT macho)
+    endif()
+  else()
+    if(CMAKE_C_SIZEOF_DATA_PTR EQUAL 8)
+      set(CMAKE_ASM_NASM_OBJECT_FORMAT elf64)
+    else()
+      set(CMAKE_ASM_NASM_OBJECT_FORMAT elf)
+    endif()
+  endif()
+endif()
+
+set(CMAKE_ASM_NASM_COMPILE_OBJECT "<CMAKE_ASM_NASM_COMPILER> <INCLUDES> <FLAGS> -f ${CMAKE_ASM_NASM_OBJECT_FORMAT} -o <OBJECT> <SOURCE>")
+
+# Load the generic ASMInformation file:
+set(ASM_DIALECT "_NASM")
+include(CMakeASMInformation)
+set(ASM_DIALECT)
diff --git a/share/cmake-3.10/Modules/CMakeAddFortranSubdirectory.cmake b/share/cmake-3.10/Modules/CMakeAddFortranSubdirectory.cmake
new file mode 100644
index 0000000..4649f35
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeAddFortranSubdirectory.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.
+
+#.rst:
+# CMakeAddFortranSubdirectory
+# ---------------------------
+#
+# Use MinGW gfortran from VS if a fortran compiler is not found.
+#
+# The 'add_fortran_subdirectory' function adds a subdirectory to a
+# project that contains a fortran only sub-project.  The module will
+# check the current compiler and see if it can support fortran.  If no
+# fortran compiler is found and the compiler is MSVC, then this module
+# will find the MinGW gfortran.  It will then use an external project to
+# build with the MinGW tools.  It will also create imported targets for
+# the libraries created.  This will only work if the fortran code is
+# built into a dll, so BUILD_SHARED_LIBS is turned on in the project.
+# In addition the CMAKE_GNUtoMS option is set to on, so that the MS .lib
+# files are created.  Usage is as follows:
+#
+# ::
+#
+#   cmake_add_fortran_subdirectory(
+#    <subdir>                # name of subdirectory
+#    PROJECT <project_name>  # project name in subdir top CMakeLists.txt
+#    ARCHIVE_DIR <dir>       # dir where project places .lib files
+#    RUNTIME_DIR <dir>       # dir where project places .dll files
+#    LIBRARIES <lib>...      # names of library targets to import
+#    LINK_LIBRARIES          # link interface libraries for LIBRARIES
+#     [LINK_LIBS <lib> <dep>...]...
+#    CMAKE_COMMAND_LINE ...  # extra command line flags to pass to cmake
+#    NO_EXTERNAL_INSTALL     # skip installation of external project
+#    )
+#
+# Relative paths in ARCHIVE_DIR and RUNTIME_DIR are interpreted with
+# respect to the build directory corresponding to the source directory
+# in which the function is invoked.
+#
+# Limitations:
+#
+# NO_EXTERNAL_INSTALL is required for forward compatibility with a
+# future version that supports installation of the external project
+# binaries during "make install".
+
+set(_MS_MINGW_SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR})
+include(CheckLanguage)
+include(ExternalProject)
+
+function(_setup_mingw_config_and_build source_dir build_dir)
+  # Look for a MinGW gfortran.
+  find_program(MINGW_GFORTRAN
+    NAMES gfortran
+    PATHS
+      c:/MinGW/bin
+      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MinGW;InstallLocation]/bin"
+    )
+  if(NOT MINGW_GFORTRAN)
+    message(FATAL_ERROR
+      "gfortran not found, please install MinGW with the gfortran option."
+      "Or set the cache variable MINGW_GFORTRAN to the full path. "
+      " This is required to build")
+  endif()
+
+  # Validate the MinGW gfortran we found.
+  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+    set(_mingw_target "Target:.*64.*mingw")
+  else()
+    set(_mingw_target "Target:.*mingw32")
+  endif()
+  execute_process(COMMAND "${MINGW_GFORTRAN}" -v
+    ERROR_VARIABLE out ERROR_STRIP_TRAILING_WHITESPACE)
+  if(NOT "${out}" MATCHES "${_mingw_target}")
+    string(REPLACE "\n" "\n  " out "  ${out}")
+    message(FATAL_ERROR
+      "MINGW_GFORTRAN is set to\n"
+      "  ${MINGW_GFORTRAN}\n"
+      "which is not a MinGW gfortran for this architecture.  "
+      "The output from -v does not match \"${_mingw_target}\":\n"
+      "${out}\n"
+      "Set MINGW_GFORTRAN to a proper MinGW gfortran for this architecture."
+      )
+  endif()
+
+  # Configure scripts to run MinGW tools with the proper PATH.
+  get_filename_component(MINGW_PATH ${MINGW_GFORTRAN} PATH)
+  file(TO_NATIVE_PATH "${MINGW_PATH}" MINGW_PATH)
+  string(REPLACE "\\" "\\\\" MINGW_PATH "${MINGW_PATH}")
+  configure_file(
+    ${_MS_MINGW_SOURCE_DIR}/CMakeAddFortranSubdirectory/config_mingw.cmake.in
+    ${build_dir}/config_mingw.cmake
+    @ONLY)
+  configure_file(
+    ${_MS_MINGW_SOURCE_DIR}/CMakeAddFortranSubdirectory/build_mingw.cmake.in
+    ${build_dir}/build_mingw.cmake
+    @ONLY)
+endfunction()
+
+function(_add_fortran_library_link_interface library depend_library)
+  set_target_properties(${library} PROPERTIES
+    IMPORTED_LINK_INTERFACE_LIBRARIES_NOCONFIG "${depend_library}")
+endfunction()
+
+
+function(cmake_add_fortran_subdirectory subdir)
+  # Parse arguments to function
+  set(options NO_EXTERNAL_INSTALL)
+  set(oneValueArgs PROJECT ARCHIVE_DIR RUNTIME_DIR)
+  set(multiValueArgs LIBRARIES LINK_LIBRARIES CMAKE_COMMAND_LINE)
+  cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+  if(NOT ARGS_NO_EXTERNAL_INSTALL)
+    message(FATAL_ERROR
+      "Option NO_EXTERNAL_INSTALL is required (for forward compatibility) "
+      "but was not given."
+      )
+  endif()
+
+  # if we are not using MSVC without fortran support
+  # then just use the usual add_subdirectory to build
+  # the fortran library
+  check_language(Fortran)
+  if(NOT (MSVC AND (NOT CMAKE_Fortran_COMPILER)))
+    add_subdirectory(${subdir})
+    return()
+  endif()
+
+  # if we have MSVC without Intel fortran then setup
+  # external projects to build with mingw fortran
+
+  set(source_dir "${CMAKE_CURRENT_SOURCE_DIR}/${subdir}")
+  set(project_name "${ARGS_PROJECT}")
+  set(library_dir "${ARGS_ARCHIVE_DIR}")
+  set(binary_dir "${ARGS_RUNTIME_DIR}")
+  set(libraries ${ARGS_LIBRARIES})
+  # use the same directory that add_subdirectory would have used
+  set(build_dir "${CMAKE_CURRENT_BINARY_DIR}/${subdir}")
+  foreach(dir_var library_dir binary_dir)
+    if(NOT IS_ABSOLUTE "${${dir_var}}")
+      get_filename_component(${dir_var}
+        "${CMAKE_CURRENT_BINARY_DIR}/${${dir_var}}" ABSOLUTE)
+    endif()
+  endforeach()
+  # create build and configure wrapper scripts
+  _setup_mingw_config_and_build("${source_dir}" "${build_dir}")
+  # create the external project
+  externalproject_add(${project_name}_build
+    SOURCE_DIR ${source_dir}
+    BINARY_DIR ${build_dir}
+    CONFIGURE_COMMAND ${CMAKE_COMMAND}
+    -P ${build_dir}/config_mingw.cmake
+    BUILD_COMMAND ${CMAKE_COMMAND}
+    -P ${build_dir}/build_mingw.cmake
+    INSTALL_COMMAND ""
+    )
+  # make the external project always run make with each build
+  externalproject_add_step(${project_name}_build forcebuild
+    COMMAND ${CMAKE_COMMAND}
+    -E remove
+    ${CMAKE_CURRENT_BUILD_DIR}/${project_name}-prefix/src/${project_name}-stamp/${project_name}-build
+    DEPENDEES configure
+    DEPENDERS build
+    ALWAYS 1
+    )
+  # create imported targets for all libraries
+  foreach(lib ${libraries})
+    add_library(${lib} SHARED IMPORTED GLOBAL)
+    set_property(TARGET ${lib} APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG)
+    set_target_properties(${lib} PROPERTIES
+      IMPORTED_IMPLIB_NOCONFIG   "${library_dir}/lib${lib}.lib"
+      IMPORTED_LOCATION_NOCONFIG "${binary_dir}/lib${lib}.dll"
+      )
+    add_dependencies(${lib} ${project_name}_build)
+  endforeach()
+
+  # now setup link libraries for targets
+  set(start FALSE)
+  set(target)
+  foreach(lib ${ARGS_LINK_LIBRARIES})
+    if("${lib}" STREQUAL "LINK_LIBS")
+      set(start TRUE)
+    else()
+      if(start)
+        if(DEFINED target)
+          # process current target and target_libs
+          _add_fortran_library_link_interface(${target} "${target_libs}")
+          # zero out target and target_libs
+          set(target)
+          set(target_libs)
+        endif()
+        # save the current target and set start to FALSE
+        set(target ${lib})
+        set(start FALSE)
+      else()
+        # append the lib to target_libs
+        list(APPEND target_libs "${lib}")
+      endif()
+    endif()
+  endforeach()
+  # process anything that is left in target and target_libs
+  if(DEFINED target)
+    _add_fortran_library_link_interface(${target} "${target_libs}")
+  endif()
+endfunction()
diff --git a/share/cmake-3.6/Modules/CMakeAddFortranSubdirectory/build_mingw.cmake.in b/share/cmake-3.10/Modules/CMakeAddFortranSubdirectory/build_mingw.cmake.in
similarity index 100%
rename from share/cmake-3.6/Modules/CMakeAddFortranSubdirectory/build_mingw.cmake.in
rename to share/cmake-3.10/Modules/CMakeAddFortranSubdirectory/build_mingw.cmake.in
diff --git a/share/cmake-3.6/Modules/CMakeAddFortranSubdirectory/config_mingw.cmake.in b/share/cmake-3.10/Modules/CMakeAddFortranSubdirectory/config_mingw.cmake.in
similarity index 100%
rename from share/cmake-3.6/Modules/CMakeAddFortranSubdirectory/config_mingw.cmake.in
rename to share/cmake-3.10/Modules/CMakeAddFortranSubdirectory/config_mingw.cmake.in
diff --git a/share/cmake-3.6/Modules/CMakeAddNewLanguage.txt b/share/cmake-3.10/Modules/CMakeAddNewLanguage.txt
similarity index 100%
rename from share/cmake-3.6/Modules/CMakeAddNewLanguage.txt
rename to share/cmake-3.10/Modules/CMakeAddNewLanguage.txt
diff --git a/share/cmake-3.10/Modules/CMakeBackwardCompatibilityC.cmake b/share/cmake-3.10/Modules/CMakeBackwardCompatibilityC.cmake
new file mode 100644
index 0000000..5d86d73
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeBackwardCompatibilityC.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.
+
+
+if(NOT CMAKE_SKIP_COMPATIBILITY_TESTS)
+  # Old CMake versions did not support OS X universal binaries anyway,
+  # so just get through this with at least some size for the types.
+  list(LENGTH CMAKE_OSX_ARCHITECTURES NUM_ARCHS)
+  if(${NUM_ARCHS} GREATER 1)
+    if(NOT DEFINED CMAKE_TRY_COMPILE_OSX_ARCHITECTURES)
+      message(WARNING "This module does not work with OS X universal binaries.")
+      set(__ERASE_CMAKE_TRY_COMPILE_OSX_ARCHITECTURES 1)
+      list(GET CMAKE_OSX_ARCHITECTURES 0 CMAKE_TRY_COMPILE_OSX_ARCHITECTURES)
+    endif()
+  endif()
+
+  include (CheckTypeSize)
+  CHECK_TYPE_SIZE(int      CMAKE_SIZEOF_INT)
+  CHECK_TYPE_SIZE(long     CMAKE_SIZEOF_LONG)
+  CHECK_TYPE_SIZE("void*"  CMAKE_SIZEOF_VOID_P)
+  CHECK_TYPE_SIZE(char     CMAKE_SIZEOF_CHAR)
+  CHECK_TYPE_SIZE(short    CMAKE_SIZEOF_SHORT)
+  CHECK_TYPE_SIZE(float    CMAKE_SIZEOF_FLOAT)
+  CHECK_TYPE_SIZE(double   CMAKE_SIZEOF_DOUBLE)
+
+  include (CheckIncludeFile)
+  CHECK_INCLUDE_FILE("limits.h"       CMAKE_HAVE_LIMITS_H)
+  CHECK_INCLUDE_FILE("unistd.h"       CMAKE_HAVE_UNISTD_H)
+  CHECK_INCLUDE_FILE("pthread.h"      CMAKE_HAVE_PTHREAD_H)
+
+  include (CheckIncludeFiles)
+  CHECK_INCLUDE_FILES("sys/types.h;sys/prctl.h"    CMAKE_HAVE_SYS_PRCTL_H)
+
+  include (TestBigEndian)
+  TEST_BIG_ENDIAN(CMAKE_WORDS_BIGENDIAN)
+  include (FindX11)
+
+  if("${X11_X11_INCLUDE_PATH}" STREQUAL "/usr/include")
+    set (CMAKE_X_CFLAGS "" CACHE STRING "X11 extra flags.")
+  else()
+    set (CMAKE_X_CFLAGS "-I${X11_X11_INCLUDE_PATH}" CACHE STRING
+         "X11 extra flags.")
+  endif()
+  set (CMAKE_X_LIBS "${X11_LIBRARIES}" CACHE STRING
+       "Libraries and options used in X11 programs.")
+  set (CMAKE_HAS_X "${X11_FOUND}" CACHE INTERNAL "Is X11 around.")
+
+  include (FindThreads)
+
+  set (CMAKE_THREAD_LIBS        "${CMAKE_THREAD_LIBS_INIT}" CACHE STRING
+    "Thread library used.")
+
+  set (CMAKE_USE_PTHREADS       "${CMAKE_USE_PTHREADS_INIT}" CACHE BOOL
+     "Use the pthreads library.")
+
+  set (CMAKE_USE_WIN32_THREADS  "${CMAKE_USE_WIN32_THREADS_INIT}" CACHE BOOL
+       "Use the win32 thread library.")
+
+  set (CMAKE_HP_PTHREADS        ${CMAKE_HP_PTHREADS_INIT} CACHE BOOL
+     "Use HP pthreads.")
+
+  set (CMAKE_USE_SPROC          ${CMAKE_USE_SPROC_INIT} CACHE BOOL
+     "Use sproc libs.")
+
+  if(__ERASE_CMAKE_TRY_COMPILE_OSX_ARCHITECTURES)
+    set(CMAKE_TRY_COMPILE_OSX_ARCHITECTURES)
+    set(__ERASE_CMAKE_TRY_COMPILE_OSX_ARCHITECTURES)
+  endif()
+endif()
+
+mark_as_advanced(
+CMAKE_HP_PTHREADS
+CMAKE_THREAD_LIBS
+CMAKE_USE_PTHREADS
+CMAKE_USE_SPROC
+CMAKE_USE_WIN32_THREADS
+CMAKE_X_CFLAGS
+CMAKE_X_LIBS
+)
+
diff --git a/share/cmake-3.10/Modules/CMakeBackwardCompatibilityCXX.cmake b/share/cmake-3.10/Modules/CMakeBackwardCompatibilityCXX.cmake
new file mode 100644
index 0000000..cbd5ea7
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeBackwardCompatibilityCXX.cmake
@@ -0,0 +1,51 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#.rst:
+# CMakeBackwardCompatibilityCXX
+# -----------------------------
+#
+# define a bunch of backwards compatibility variables
+#
+# ::
+#
+#   CMAKE_ANSI_CXXFLAGS - flag for ansi c++
+#   CMAKE_HAS_ANSI_STRING_STREAM - has <strstream>
+#   include(TestForANSIStreamHeaders)
+#   include(CheckIncludeFileCXX)
+#   include(TestForSTDNamespace)
+#   include(TestForANSIForScope)
+
+if(NOT CMAKE_SKIP_COMPATIBILITY_TESTS)
+  # check for some ANSI flags in the CXX compiler if it is not gnu
+  if(NOT CMAKE_COMPILER_IS_GNUCXX)
+    include(TestCXXAcceptsFlag)
+    set(CMAKE_TRY_ANSI_CXX_FLAGS "")
+    if(CMAKE_SYSTEM_NAME MATCHES "IRIX")
+      set(CMAKE_TRY_ANSI_CXX_FLAGS "-LANG:std")
+    endif()
+    if(CMAKE_SYSTEM_NAME MATCHES "OSF")
+      set(CMAKE_TRY_ANSI_CXX_FLAGS "-std strict_ansi -nopure_cname")
+    endif()
+    # if CMAKE_TRY_ANSI_CXX_FLAGS has something in it, see
+    # if the compiler accepts it
+    if(NOT CMAKE_TRY_ANSI_CXX_FLAGS STREQUAL "")
+      CHECK_CXX_ACCEPTS_FLAG(${CMAKE_TRY_ANSI_CXX_FLAGS} CMAKE_CXX_ACCEPTS_FLAGS)
+      # if the compiler liked the flag then set CMAKE_ANSI_CXXFLAGS
+      # to the flag
+      if(CMAKE_CXX_ACCEPTS_FLAGS)
+        set(CMAKE_ANSI_CXXFLAGS ${CMAKE_TRY_ANSI_CXX_FLAGS} CACHE INTERNAL
+        "What flags are required by the c++ compiler to make it ansi." )
+      endif()
+    endif()
+  endif()
+  set(CMAKE_CXX_FLAGS_SAVE ${CMAKE_CXX_FLAGS})
+  string(APPEND CMAKE_CXX_FLAGS " ${CMAKE_ANSI_CXXFLAGS}")
+  include(TestForANSIStreamHeaders)
+  include(CheckIncludeFileCXX)
+  include(TestForSTDNamespace)
+  include(TestForANSIForScope)
+  include(TestForSSTREAM)
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_SAVE}")
+endif()
+
diff --git a/share/cmake-3.10/Modules/CMakeBorlandFindMake.cmake b/share/cmake-3.10/Modules/CMakeBorlandFindMake.cmake
new file mode 100644
index 0000000..18b9962
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeBorlandFindMake.cmake
@@ -0,0 +1,7 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+set (CMAKE_MAKE_PROGRAM "make" CACHE STRING
+     "Program used to build from makefiles.")
+mark_as_advanced(CMAKE_MAKE_PROGRAM)
diff --git a/share/cmake-3.6/Modules/CMakeBuildSettings.cmake.in b/share/cmake-3.10/Modules/CMakeBuildSettings.cmake.in
similarity index 100%
rename from share/cmake-3.6/Modules/CMakeBuildSettings.cmake.in
rename to share/cmake-3.10/Modules/CMakeBuildSettings.cmake.in
diff --git a/share/cmake-3.10/Modules/CMakeCCompiler.cmake.in b/share/cmake-3.10/Modules/CMakeCCompiler.cmake.in
new file mode 100644
index 0000000..8ad0c01
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeCCompiler.cmake.in
@@ -0,0 +1,73 @@
+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_SIMULATE_VERSION "@CMAKE_C_SIMULATE_VERSION@")
+@_SET_CMAKE_C_COMPILER_ARCHITECTURE_ID@
+@SET_MSVC_C_ARCHITECTURE_ID@
+@SET_CMAKE_XCODE_CURRENT_ARCH@
+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_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_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.6/Modules/CMakeCCompilerABI.c b/share/cmake-3.10/Modules/CMakeCCompilerABI.c
similarity index 100%
rename from share/cmake-3.6/Modules/CMakeCCompilerABI.c
rename to share/cmake-3.10/Modules/CMakeCCompilerABI.c
diff --git a/share/cmake-3.10/Modules/CMakeCCompilerId.c.in b/share/cmake-3.10/Modules/CMakeCCompilerId.c.in
new file mode 100644
index 0000000..10f7318
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeCCompilerId.c.in
@@ -0,0 +1,86 @@
+#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__)
+#  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.10/Modules/CMakeCInformation.cmake b/share/cmake-3.10/Modules/CMakeCInformation.cmake
new file mode 100644
index 0000000..71aadb4
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeCInformation.cmake
@@ -0,0 +1,220 @@
+# 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_SYSTEM_NAME}-${CMAKE_C_COMPILER_ID}-C-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
+  endif()
+  if (NOT _INCLUDED_FILE)
+    include(Platform/${CMAKE_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_SYSTEM_NAME}-${CMAKE_C_COMPILER_ID}-C
+    OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
+endif()
+if (NOT _INCLUDED_FILE)
+  include(Platform/${CMAKE_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}")
+
+foreach(c "" _DEBUG _RELEASE _MINSIZEREL _RELWITHDEBINFO)
+  string(STRIP "${CMAKE_C_FLAGS${c}_INIT}" CMAKE_C_FLAGS${c}_INIT)
+endforeach()
+
+set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS_INIT}" CACHE STRING
+     "Flags used by the compiler during all build types.")
+
+if(NOT CMAKE_NOT_USING_CONFIG_FLAGS)
+  get_property(_GENERATOR_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
+  # default build type is none
+  if(NOT _GENERATOR_IS_MULTI_CONFIG AND NOT CMAKE_NO_BUILD_TYPE)
+    set (CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE_INIT} CACHE STRING
+      "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.")
+  endif()
+  unset(_GENERATOR_IS_MULTI_CONFIG)
+  set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG_INIT}" CACHE STRING
+    "Flags used by the compiler during debug builds.")
+  set (CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL_INIT}" CACHE STRING
+    "Flags used by the compiler during release builds for minimum size.")
+  set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE_INIT}" CACHE STRING
+    "Flags used by the compiler during release builds.")
+  set (CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO_INIT}" CACHE STRING
+    "Flags used by the compiler during release builds with debug info.")
+endif()
+
+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()
+
+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()
+
+mark_as_advanced(
+CMAKE_C_FLAGS
+CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELWITHDEBINFO
+)
+set(CMAKE_C_INFORMATION_LOADED 1)
+
+
diff --git a/share/cmake-3.10/Modules/CMakeCSharpCompiler.cmake.in b/share/cmake-3.10/Modules/CMakeCSharpCompiler.cmake.in
new file mode 100644
index 0000000..5ecc480
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeCSharpCompiler.cmake.in
@@ -0,0 +1,9 @@
+set(CMAKE_CSharp_COMPILER "@CMAKE_CSharp_COMPILER@")
+set(CMAKE_CSharp_COMPILER_ID "@CMAKE_CSharp_COMPILER_ID@")
+set(CMAKE_CSharp_COMPILER_VERSION "@CMAKE_CSharp_COMPILER_VERSION@")
+
+set(CMAKE_CSharp_COMPILER_WORKS "@CMAKE_CSharp_COMPILER_WORKS@")
+
+set(CMAKE_CSharp_COMPILER_ID_RUN "@CMAKE_CSharp_COMPILER_ID_RUN@")
+set(CMAKE_CSharp_IGNORE_EXTENSIONS "inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC")
+set(CMAKE_CSharp_SOURCE_FILE_EXTENSIONS "cs")
diff --git a/share/cmake-3.10/Modules/CMakeCSharpCompilerId.cs.in b/share/cmake-3.10/Modules/CMakeCSharpCompilerId.cs.in
new file mode 100644
index 0000000..987f63a
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeCSharpCompilerId.cs.in
@@ -0,0 +1,63 @@
+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.10/Modules/CMakeCSharpInformation.cmake b/share/cmake-3.10/Modules/CMakeCSharpInformation.cmake
new file mode 100644
index 0000000..25f869c
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeCSharpInformation.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 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.
+
+set(CMAKE_BASE_NAME)
+get_filename_component(CMAKE_BASE_NAME "${CMAKE_CSharp_COMPILER}" NAME_WE)
+
+set(CMAKE_BUILD_TYPE_INIT Debug)
+
+set(CMAKE_CSharp_FLAGS_INIT "/define:TRACE /langversion:3")
+set(CMAKE_CSharp_FLAGS_DEBUG_INIT "/debug:full /optimize- /warn:3 /errorreport:prompt /define:DEBUG")
+set(CMAKE_CSharp_FLAGS_RELEASE_INIT "/debug:none /optimize  /warn:1  /errorreport:queue")
+set(CMAKE_CSharp_FLAGS_RELWITHDEBINFO_INIT "/debug:full /optimize-")
+set(CMAKE_CSharp_FLAGS_MINSIZEREL_INIT "/debug:none /optimize")
+set(CMAKE_CSharp_LINKER_SUPPORTS_PDB ON)
+
+set(CMAKE_CSharp_STANDARD_LIBRARIES_INIT "System")
+
+if(CMAKE_SIZEOF_VOID_P EQUAL 4)
+  set(CMAKE_CSharp_FLAGS_INIT "/platform:x86 ${CMAKE_CSharp_FLAGS_INIT}")
+else()
+  set(CMAKE_CSharp_FLAGS_INIT "/platform:x64 ${CMAKE_CSharp_FLAGS_INIT}")
+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.
+
+# 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_CSharp_FLAGS ${CMAKE_SHARED_LIBRARY_CSharp_FLAGS})
+  set(CMAKE_SHARED_MODULE_CREATE_CSharp_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_CSharp_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_CSharp_FLAGS_INIT "$ENV{CSFLAGS} ${CMAKE_CSharp_FLAGS_INIT}")
+# avoid just having a space as the initial value for the cache
+if(CMAKE_CSharp_FLAGS_INIT STREQUAL " ")
+  set(CMAKE_CSharp_FLAGS_INIT)
+endif()
+set (CMAKE_CSharp_FLAGS "${CMAKE_CSharp_FLAGS_INIT}" CACHE STRING
+     "Flags used by the C# compiler during all build types.")
+
+if(NOT CMAKE_NOT_USING_CONFIG_FLAGS)
+  set (CMAKE_CSharp_FLAGS_DEBUG "${CMAKE_CSharp_FLAGS_DEBUG_INIT}" CACHE STRING
+     "Flags used by the C# compiler during debug builds.")
+  set (CMAKE_CSharp_FLAGS_MINSIZEREL "${CMAKE_CSharp_FLAGS_MINSIZEREL_INIT}" CACHE STRING
+     "Flags used by the C# compiler during release builds for minimum size.")
+  set (CMAKE_CSharp_FLAGS_RELEASE "${CMAKE_CSharp_FLAGS_RELEASE_INIT}" CACHE STRING
+     "Flags used by the C# compiler during release builds.")
+  set (CMAKE_CSharp_FLAGS_RELWITHDEBINFO "${CMAKE_CSharp_FLAGS_RELWITHDEBINFO_INIT}" CACHE STRING
+     "Flags used by the C# compiler during release builds with debug info.")
+endif()
+
+if(CMAKE_CSharp_STANDARD_LIBRARIES_INIT)
+  set(CMAKE_CSharp_STANDARD_LIBRARIES "${CMAKE_CSharp_STANDARD_LIBRARIES_INIT}"
+    CACHE STRING "Libraries linked by default with all C# applications.")
+  mark_as_advanced(CMAKE_CSharp_STANDARD_LIBRARIES)
+endif()
+
+# set missing flags (if they are not defined). This is needed in the
+# unlikely case that you have only C# and no C/C++ targets in your
+# project.
+if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS)
+    set(CMAKE_SHARED_LINKER_FLAGS "" CACHE STRING "" FORCE)
+endif()
+if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS_DEBUG)
+    set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "" CACHE STRING "" FORCE)
+endif()
+if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS_RELEASE)
+    set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "" CACHE STRING "" FORCE)
+endif()
+if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL)
+    set(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL "" CACHE STRING "" FORCE)
+endif()
+if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO)
+    set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "" CACHE STRING "" FORCE)
+endif()
+
+if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS)
+    set(CMAKE_EXE_LINKER_FLAGS "" CACHE STRING "" FORCE)
+endif()
+if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS_DEBUG)
+    set(CMAKE_EXE_LINKER_FLAGS_DEBUG "" CACHE STRING "" FORCE)
+endif()
+if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS_RELEASE)
+    set(CMAKE_EXE_LINKER_FLAGS_RELEASE "" CACHE STRING "" FORCE)
+endif()
+if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS_MINSIZEREL)
+    set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "" CACHE STRING "" FORCE)
+endif()
+if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO)
+    set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "" CACHE STRING "" FORCE)
+endif()
+
+set(CMAKE_CSharp_CREATE_SHARED_LIBRARY "CSharp_NO_CREATE_SHARED_LIBRARY")
+set(CMAKE_CSharp_CREATE_SHARED_MODULE "CSharp_NO_CREATE_SHARED_MODULE")
+set(CMAKE_CSharp_LINK_EXECUTABLE "CSharp_NO_LINK_EXECUTABLE")
+
+mark_as_advanced(
+    CMAKE_CSharp_FLAGS
+    CMAKE_CSharp_FLAGS_RELEASE
+    CMAKE_CSharp_FLAGS_RELWITHDEBINFO
+    CMAKE_CSharp_FLAGS_MINSIZEREL
+    CMAKE_CSharp_FLAGS_DEBUG
+    )
+
+set(CMAKE_CSharp_USE_RESPONSE_FILE_FOR_OBJECTS 1)
+set(CMAKE_CSharp_INFORMATION_LOADED 1)
diff --git a/share/cmake-3.10/Modules/CMakeCUDACompiler.cmake.in b/share/cmake-3.10/Modules/CMakeCUDACompiler.cmake.in
new file mode 100644
index 0000000..f524e5f
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeCUDACompiler.cmake.in
@@ -0,0 +1,27 @@
+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_SIMULATE_ID "@CMAKE_CUDA_SIMULATE_ID@")
+set(CMAKE_CUDA_SIMULATE_VERSION "@CMAKE_CUDA_SIMULATE_VERSION@")
+@SET_MSVC_CUDA_ARCHITECTURE_ID@
+
+set(CMAKE_CUDA_COMPILER_ENV_VAR "CUDACXX")
+set(CMAKE_CUDA_HOST_COMPILER_ENV_VAR "CUDAHOSTCXX")
+
+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_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_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@")
diff --git a/share/cmake-3.10/Modules/CMakeCUDACompilerABI.cu b/share/cmake-3.10/Modules/CMakeCUDACompilerABI.cu
new file mode 100644
index 0000000..99bacef
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeCUDACompilerABI.cu
@@ -0,0 +1,16 @@
+#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.10/Modules/CMakeCUDACompilerId.cu.in b/share/cmake-3.10/Modules/CMakeCUDACompilerId.cu.in
new file mode 100644
index 0000000..018bab7
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeCUDACompilerId.cu.in
@@ -0,0 +1,50 @@
+#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 > 201402L
+  "17"
+#elif __cplusplus >= 201402L
+  "14"
+#elif __cplusplus >= 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 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.10/Modules/CMakeCUDAInformation.cmake b/share/cmake-3.10/Modules/CMakeCUDAInformation.cmake
new file mode 100644
index 0000000..f4609cd
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeCUDAInformation.cmake
@@ -0,0 +1,217 @@
+# 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")
+
+# 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_SYSTEM_NAME}-${CMAKE_CUDA_COMPILER_ID}-CUDA-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL)
+  endif()
+  include(Platform/${CMAKE_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}")
+
+foreach(c "" _DEBUG _RELEASE _MINSIZEREL _RELWITHDEBINFO)
+  string(STRIP "${CMAKE_CUDA_FLAGS${c}_INIT}" CMAKE_CUDA_FLAGS${c}_INIT)
+endforeach()
+
+set (CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS_INIT}" CACHE STRING
+     "Flags used by the compiler during all build types.")
+
+if(NOT CMAKE_NOT_USING_CONFIG_FLAGS)
+  set (CMAKE_CUDA_FLAGS_DEBUG "${CMAKE_CUDA_FLAGS_DEBUG_INIT}" CACHE STRING
+     "Flags used by the compiler during debug builds.")
+  set (CMAKE_CUDA_FLAGS_MINSIZEREL "${CMAKE_CUDA_FLAGS_MINSIZEREL_INIT}" CACHE STRING
+     "Flags used by the compiler during release builds for minimum size.")
+  set (CMAKE_CUDA_FLAGS_RELEASE "${CMAKE_CUDA_FLAGS_RELEASE_INIT}" CACHE STRING
+     "Flags used by the compiler during release builds.")
+  set (CMAKE_CUDA_FLAGS_RELWITHDEBINFO "${CMAKE_CUDA_FLAGS_RELWITHDEBINFO_INIT}" CACHE STRING
+     "Flags used by the compiler during release builds with debug info.")
+
+endif()
+
+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()
+
+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)
+  set(CMAKE_CUDA_HOST_FLAGS "-ccbin=<CMAKE_CUDA_HOST_COMPILER>")
+else()
+  set(CMAKE_CUDA_HOST_FLAGS "")
+endif()
+
+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()
+
+# 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_HOST_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -x cu -ptx <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_HOST_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -x cu -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_HOST_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -x cu -c <SOURCE> -o <OBJECT>")
+endif()
+
+if(CMAKE_GENERATOR STREQUAL "Ninja")
+  set(CMAKE_CUDA_COMPILE_DEPENDENCY_DETECTION
+    "<CMAKE_CUDA_COMPILER> ${CMAKE_CUDA_HOST_FLAGS} <DEFINES> <INCLUDES> <FLAGS> -x cu -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 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> <CMAKE_CUDA_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>${__IMPLICT_LINKS}")
+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()
+
+
+#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_HOST_FLAGS} <CMAKE_CUDA_LINK_FLAGS> <LANGUAGE_COMPILE_FLAGS> ${CMAKE_CUDA_COMPILE_OPTIONS_PIC} ${_CMAKE_CUDA_EXTRA_DEVICE_LINK_FLAGS} -shared -dlink <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
+endif()
+if(NOT CMAKE_CUDA_DEVICE_LINK_EXECUTABLE)
+  set(CMAKE_CUDA_DEVICE_LINK_EXECUTABLE
+    "<CMAKE_CUDA_COMPILER> ${CMAKE_CUDA_HOST_FLAGS} <FLAGS> <CMAKE_CUDA_LINK_FLAGS> ${CMAKE_CUDA_COMPILE_OPTIONS_PIC} ${_CMAKE_CUDA_EXTRA_DEVICE_LINK_FLAGS} -shared -dlink <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
+endif()
+
+unset(_CMAKE_CUDA_EXTRA_DEVICE_LINK_FLAGS)
+
+mark_as_advanced(
+CMAKE_CUDA_FLAGS
+CMAKE_CUDA_FLAGS_RELEASE
+CMAKE_CUDA_FLAGS_RELWITHDEBINFO
+CMAKE_CUDA_FLAGS_MINSIZEREL
+CMAKE_CUDA_FLAGS_DEBUG)
+
+set(CMAKE_CUDA_INFORMATION_LOADED 1)
diff --git a/share/cmake-3.10/Modules/CMakeCXXCompiler.cmake.in b/share/cmake-3.10/Modules/CMakeCXXCompiler.cmake.in
new file mode 100644
index 0000000..df57a4f
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeCXXCompiler.cmake.in
@@ -0,0 +1,75 @@
+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_CXX_PLATFORM_ID "@CMAKE_CXX_PLATFORM_ID@")
+set(CMAKE_CXX_SIMULATE_ID "@CMAKE_CXX_SIMULATE_ID@")
+set(CMAKE_CXX_SIMULATE_VERSION "@CMAKE_CXX_SIMULATE_VERSION@")
+@_SET_CMAKE_CXX_COMPILER_ARCHITECTURE_ID@
+@SET_MSVC_CXX_ARCHITECTURE_ID@
+@SET_CMAKE_XCODE_CURRENT_ARCH@
+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_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_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;mm;CPP)
+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_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.6/Modules/CMakeCXXCompilerABI.cpp b/share/cmake-3.10/Modules/CMakeCXXCompilerABI.cpp
similarity index 100%
rename from share/cmake-3.6/Modules/CMakeCXXCompilerABI.cpp
rename to share/cmake-3.10/Modules/CMakeCXXCompilerABI.cpp
diff --git a/share/cmake-3.10/Modules/CMakeCXXCompilerId.cpp.in b/share/cmake-3.10/Modules/CMakeCXXCompilerId.cpp.in
new file mode 100644
index 0000000..4cb2267
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeCXXCompilerId.cpp.in
@@ -0,0 +1,73 @@
+/* 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(_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 > 201402L
+  "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.10/Modules/CMakeCXXInformation.cmake b/share/cmake-3.10/Modules/CMakeCXXInformation.cmake
new file mode 100644
index 0000000..ec731fa
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeCXXInformation.cmake
@@ -0,0 +1,297 @@
+# 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_SYSTEM_NAME}-${CMAKE_CXX_COMPILER_ID}-CXX-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
+  endif()
+  if (NOT _INCLUDED_FILE)
+    include(Platform/${CMAKE_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_SYSTEM_NAME}-${CMAKE_CXX_COMPILER_ID}-CXX OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
+endif()
+if (NOT _INCLUDED_FILE)
+  include(Platform/${CMAKE_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_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()
+
+if(NOT CMAKE_INCLUDE_FLAG_SEP_CXX)
+  set(CMAKE_INCLUDE_FLAG_SEP_CXX ${CMAKE_INCLUDE_FLAG_SEP_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}")
+
+foreach(c "" _DEBUG _RELEASE _MINSIZEREL _RELWITHDEBINFO)
+  string(STRIP "${CMAKE_CXX_FLAGS${c}_INIT}" CMAKE_CXX_FLAGS${c}_INIT)
+endforeach()
+
+set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_INIT}" CACHE STRING
+     "Flags used by the compiler during all build types.")
+
+if(NOT CMAKE_NOT_USING_CONFIG_FLAGS)
+  set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG_INIT}" CACHE STRING
+     "Flags used by the compiler during debug builds.")
+  set (CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL_INIT}" CACHE STRING
+     "Flags used by the compiler during release builds for minimum size.")
+  set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE_INIT}" CACHE STRING
+     "Flags used by the compiler during release builds.")
+  set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT}" CACHE STRING
+     "Flags used by the compiler during release builds with debug info.")
+
+endif()
+
+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()
+
+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
+CMAKE_CXX_FLAGS
+CMAKE_CXX_FLAGS_RELEASE
+CMAKE_CXX_FLAGS_RELWITHDEBINFO
+CMAKE_CXX_FLAGS_MINSIZEREL
+CMAKE_CXX_FLAGS_DEBUG)
+
+set(CMAKE_CXX_INFORMATION_LOADED 1)
+
diff --git a/share/cmake-3.10/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake b/share/cmake-3.10/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake
new file mode 100644
index 0000000..e60ffe0
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeCheckCompilerFlagCommonPatterns.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.
+
+
+# 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 "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
+   )
+endmacro ()
diff --git a/share/cmake-3.10/Modules/CMakeCommonLanguageInclude.cmake b/share/cmake-3.10/Modules/CMakeCommonLanguageInclude.cmake
new file mode 100644
index 0000000..43b5da0
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeCommonLanguageInclude.cmake
@@ -0,0 +1,129 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# this file has flags that are shared across languages and sets
+# cache values that can be initialized in the platform-compiler.cmake file
+# it may be included by more than one language.
+
+string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " $ENV{LDFLAGS}")
+string(APPEND CMAKE_SHARED_LINKER_FLAGS_INIT " $ENV{LDFLAGS}")
+string(APPEND CMAKE_MODULE_LINKER_FLAGS_INIT " $ENV{LDFLAGS}")
+
+foreach(t EXE SHARED MODULE STATIC)
+  foreach(c "" _DEBUG _RELEASE _MINSIZEREL _RELWITHDEBINFO)
+    string(STRIP "${CMAKE_${t}_LINKER_FLAGS${c}_INIT}" CMAKE_${t}_LINKER_FLAGS${c}_INIT)
+  endforeach()
+endforeach()
+
+if(NOT CMAKE_NOT_USING_CONFIG_FLAGS)
+  get_property(_GENERATOR_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
+  # default build type is none
+  if(NOT _GENERATOR_IS_MULTI_CONFIG AND NOT CMAKE_NO_BUILD_TYPE)
+    set (CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE_INIT} CACHE STRING
+      "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.")
+  endif()
+  unset(_GENERATOR_IS_MULTI_CONFIG)
+
+  set (CMAKE_EXE_LINKER_FLAGS_DEBUG ${CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT} CACHE STRING
+     "Flags used by the linker during debug builds.")
+
+  set (CMAKE_EXE_LINKER_FLAGS_MINSIZEREL ${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL_INIT} CACHE STRING
+     "Flags used by the linker during release minsize builds.")
+
+  set (CMAKE_EXE_LINKER_FLAGS_RELEASE ${CMAKE_EXE_LINKER_FLAGS_RELEASE_INIT} CACHE STRING
+     "Flags used by the linker during release builds.")
+
+  set (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+     ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT} CACHE STRING
+     "Flags used by the linker during Release with Debug Info builds.")
+
+  set (CMAKE_SHARED_LINKER_FLAGS_DEBUG ${CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT} CACHE STRING
+     "Flags used by the linker during debug builds.")
+
+  set (CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL ${CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL_INIT}
+     CACHE STRING
+     "Flags used by the linker during release minsize builds.")
+
+  set (CMAKE_SHARED_LINKER_FLAGS_RELEASE ${CMAKE_SHARED_LINKER_FLAGS_RELEASE_INIT} CACHE STRING
+     "Flags used by the linker during release builds.")
+
+  set (CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+     ${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT} CACHE STRING
+     "Flags used by the linker during Release with Debug Info builds.")
+
+  set (CMAKE_MODULE_LINKER_FLAGS_DEBUG ${CMAKE_MODULE_LINKER_FLAGS_DEBUG_INIT} CACHE STRING
+     "Flags used by the linker during debug builds.")
+
+  set (CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL ${CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL_INIT}
+     CACHE STRING
+     "Flags used by the linker during release minsize builds.")
+
+  set (CMAKE_MODULE_LINKER_FLAGS_RELEASE ${CMAKE_MODULE_LINKER_FLAGS_RELEASE_INIT} CACHE STRING
+     "Flags used by the linker during release builds.")
+
+  set (CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+     ${CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO_INIT} CACHE STRING
+     "Flags used by the linker during Release with Debug Info builds.")
+
+  set (CMAKE_STATIC_LINKER_FLAGS_DEBUG ${CMAKE_STATIC_LINKER_FLAGS_DEBUG_INIT} CACHE STRING
+     "Flags used by the linker during debug builds.")
+
+  set (CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL ${CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL_INIT}
+     CACHE STRING
+     "Flags used by the linker during release minsize builds.")
+
+  set (CMAKE_STATIC_LINKER_FLAGS_RELEASE ${CMAKE_STATIC_LINKER_FLAGS_RELEASE_INIT} CACHE STRING
+     "Flags used by the linker during release builds.")
+
+  set (CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+     ${CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO_INIT} CACHE STRING
+     "Flags used by the linker during Release with Debug Info builds.")
+endif()
+
+# executable linker flags
+set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS_INIT}"
+     CACHE STRING "Flags used by the linker.")
+
+# shared linker flags
+set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS_INIT}"
+     CACHE STRING "Flags used by the linker during the creation of dll's.")
+
+# module linker flags
+set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS_INIT}"
+     CACHE STRING "Flags used by the linker during the creation of modules.")
+
+# static linker flags
+set (CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS_INIT}"
+     CACHE STRING "Flags used by the linker during the creation of static libraries.")
+
+# Alias the build tool variable for backward compatibility.
+set(CMAKE_BUILD_TOOL ${CMAKE_MAKE_PROGRAM})
+
+mark_as_advanced(
+CMAKE_VERBOSE_MAKEFILE
+
+CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+
+CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+
+CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+
+CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+)
diff --git a/share/cmake-3.10/Modules/CMakeCompilerABI.h b/share/cmake-3.10/Modules/CMakeCompilerABI.h
new file mode 100644
index 0000000..ad481d6
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeCompilerABI.h
@@ -0,0 +1,38 @@
+
+/* Size of a pointer-to-data in bytes.  */
+#define SIZEOF_DPTR (sizeof(void*))
+const char info_sizeof_dptr[] = {
+  '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 needs this comment to break after the opening brace */
+};
+
+/* Application Binary Interface.  */
+#if defined(__sgi) && defined(_ABIO32)
+#define ABI_ID "ELF O32"
+#elif defined(__sgi) && defined(_ABIN32)
+#define ABI_ID "ELF N32"
+#elif defined(__sgi) && defined(_ABI64)
+#define ABI_ID "ELF 64"
+
+/* Check for (some) ARM ABIs.
+ * See e.g. http://wiki.debian.org/ArmEabiPort for some information on this. */
+#elif 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.10/Modules/CMakeCompilerIdDetection.cmake b/share/cmake-3.10/Modules/CMakeCompilerIdDetection.cmake
new file mode 100644
index 0000000..f2d43b6
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeCompilerIdDetection.cmake
@@ -0,0 +1,152 @@
+# 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
+      XL
+      VisualAge
+      PGI
+      Cray
+      TI
+      Fujitsu
+    )
+    if (lang STREQUAL C)
+      list(APPEND ordered_compilers
+        TinyCC
+        Bruce
+      )
+    endif()
+    list(APPEND ordered_compilers
+      SCO
+      AppleClang
+      Clang
+      GNU
+      MSVC
+      ADSP
+      IAR
+      ARMCC
+    )
+    if (lang STREQUAL C)
+      list(APPEND ordered_compilers
+        SDCC
+      )
+    endif()
+    list(APPEND ordered_compilers
+      MIPSpro)
+
+    #Currently the only CUDA compilers are NVIDIA
+    if(lang STREQUAL CUDA)
+      set(ordered_compilers NVIDIA)
+    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()
+    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(__sgi)
+# define ${CID_PREFIX}COMPILER_ID \"MIPSpro\"
+
+#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.6/Modules/CMakeConfigurableFile.in b/share/cmake-3.10/Modules/CMakeConfigurableFile.in
similarity index 100%
rename from share/cmake-3.6/Modules/CMakeConfigurableFile.in
rename to share/cmake-3.10/Modules/CMakeConfigurableFile.in
diff --git a/share/cmake-3.10/Modules/CMakeDependentOption.cmake b/share/cmake-3.10/Modules/CMakeDependentOption.cmake
new file mode 100644
index 0000000..21d3c96
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeDependentOption.cmake
@@ -0,0 +1,49 @@
+# 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:
+#
+# ::
+#
+#   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.
+
+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.10/Modules/CMakeDetermineASM-ATTCompiler.cmake b/share/cmake-3.10/Modules/CMakeDetermineASM-ATTCompiler.cmake
new file mode 100644
index 0000000..a2efb6a
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeDetermineASM-ATTCompiler.cmake
@@ -0,0 +1,10 @@
+# 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 using AT&T syntax, e.g. GNU as
+
+set(ASM_DIALECT "-ATT")
+set(CMAKE_ASM${ASM_DIALECT}_COMPILER_LIST ${_CMAKE_TOOLCHAIN_PREFIX}gas ${_CMAKE_TOOLCHAIN_PREFIX}as)
+include(CMakeDetermineASMCompiler)
+set(ASM_DIALECT)
diff --git a/share/cmake-3.10/Modules/CMakeDetermineASMCompiler.cmake b/share/cmake-3.10/Modules/CMakeDetermineASMCompiler.cmake
new file mode 100644
index 0000000..f7cf54a
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeDetermineASMCompiler.cmake
@@ -0,0 +1,212 @@
+# 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_COMPILER "${CMAKE_C_COMPILER}" CACHE FILEPATH "The ASM compiler")
+        set(CMAKE_ASM_COMPILER_ID "${CMAKE_C_COMPILER_ID}")
+      elseif(CMAKE_CXX_COMPILER)
+        set(CMAKE_ASM_COMPILER "${CMAKE_CXX_COMPILER}" CACHE FILEPATH "The ASM compiler")
+        set(CMAKE_ASM_COMPILER_ID "${CMAKE_CXX_COMPILER_ID}")
+      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 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)")
+
+  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
+    # 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()
+    if("${_compileid}" MATCHES "for[ ]+([A-Za-z0-9]+)")
+      set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ARCHITECTURE_ID ${CMAKE_MATCH_1})
+    endif()
+  endif()
+  unset(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_OUTPUT)
+  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()
+  message(STATUS "The ASM${ASM_DIALECT} compiler identification is ${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID}${_version}")
+  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 ()
+
+
+include(CMakeFindBinUtils)
+set(_CMAKE_PROCESSING_LANGUAGE "ASM")
+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_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.10/Modules/CMakeDetermineASM_MASMCompiler.cmake b/share/cmake-3.10/Modules/CMakeDetermineASM_MASMCompiler.cmake
new file mode 100644
index 0000000..789b049
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeDetermineASM_MASMCompiler.cmake
@@ -0,0 +1,18 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# Find the MS assembler (masm or masm64)
+
+set(ASM_DIALECT "_MASM")
+
+# if we are using the 64bit cl compiler, assume we also want the 64bit assembler
+if(";${CMAKE_VS_PLATFORM_NAME};${MSVC_C_ARCHITECTURE_ID};${MSVC_CXX_ARCHITECTURE_ID};"
+    MATCHES ";(Win64|Itanium|x64|IA64);")
+   set(CMAKE_ASM${ASM_DIALECT}_COMPILER_INIT ml64)
+else()
+   set(CMAKE_ASM${ASM_DIALECT}_COMPILER_INIT ml)
+endif()
+
+include(CMakeDetermineASMCompiler)
+set(ASM_DIALECT)
diff --git a/share/cmake-3.10/Modules/CMakeDetermineASM_NASMCompiler.cmake b/share/cmake-3.10/Modules/CMakeDetermineASM_NASMCompiler.cmake
new file mode 100644
index 0000000..dd75310
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeDetermineASM_NASMCompiler.cmake
@@ -0,0 +1,30 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# Find the nasm assembler. yasm (http://www.tortall.net/projects/yasm/) is nasm compatible
+
+set(CMAKE_ASM_NASM_COMPILER_LIST nasm yasm)
+
+if(NOT CMAKE_ASM_NASM_COMPILER)
+  set(_CMAKE_ENV_VARX86 "ProgramFiles(x86)")
+  set(_CMAKE_ASM_NASM_COMPILER_PATHS
+    "[HKEY_CURRENT_USER\\SOFTWARE\\nasm]"
+    "$ENV{ProgramFiles}/NASM"
+    "$ENV{${ENV_VARX86}}/NASM"
+    "$ENV{LOCALAPPDATA}/NASM"
+    )
+  find_program(CMAKE_ASM_NASM_COMPILER
+    NAMES ${CMAKE_ASM_NASM_COMPILER_LIST}
+    PATHS ${_CMAKE_ASM_NASM_COMPILER_PATHS}
+    NO_DEFAULT_PATH
+    DOC "NASM compiler"
+  )
+  unset(_CMAKE_ENV_VARX86)
+  unset(_CMAKE_ASM_NASM_COMPILER_PATHS)
+endif()
+
+# Load the generic DetermineASM compiler file with the DIALECT set properly:
+set(ASM_DIALECT "_NASM")
+include(CMakeDetermineASMCompiler)
+set(ASM_DIALECT)
diff --git a/share/cmake-3.10/Modules/CMakeDetermineCCompiler.cmake b/share/cmake-3.10/Modules/CMakeDetermineCCompiler.cmake
new file mode 100644
index 0000000..4e56ce1
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeDetermineCCompiler.cmake
@@ -0,0 +1,196 @@
+# 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 "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__"
+    )
+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.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_DIAGNOSE_UNSUPPORTED_CLANG(C CC)
+
+  # 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()
+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 (CMAKE_CROSSCOMPILING  AND NOT _CMAKE_TOOLCHAIN_PREFIX)
+
+  if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
+    get_filename_component(COMPILER_BASENAME "${CMAKE_C_COMPILER}" NAME)
+    if (COMPILER_BASENAME MATCHES "^(.+-)(clang|g?cc)(-[0-9]+\\.[0-9]+\\.[0-9]+)?(\\.exe)?$")
+      set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
+    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([^_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 ()
+
+include(CMakeFindBinUtils)
+set(_CMAKE_PROCESSING_LANGUAGE "C")
+include(Compiler/${CMAKE_C_COMPILER_ID}-FindBinUtils OPTIONAL)
+unset(_CMAKE_PROCESSING_LANGUAGE)
+
+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_CURRENT_ARCH)
+  set(SET_CMAKE_XCODE_CURRENT_ARCH
+    "set(CMAKE_XCODE_CURRENT_ARCH ${CMAKE_C_XCODE_CURRENT_ARCH})")
+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.10/Modules/CMakeDetermineCSharpCompiler.cmake b/share/cmake-3.10/Modules/CMakeDetermineCSharpCompiler.cmake
new file mode 100644
index 0000000..eb825a5
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeDetermineCSharpCompiler.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(NOT ${CMAKE_GENERATOR} MATCHES "Visual Studio ([^89]|[89][0-9])")
+   message(FATAL_ERROR
+    "C# is currently only supported for Microsoft Visual Studio 2010 and later.")
+endif()
+
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake)
+#include(Platform/${CMAKE_SYSTEM_NAME}-Determine-CSharp OPTIONAL)
+#include(Platform/${CMAKE_SYSTEM_NAME}-CSharp OPTIONAL)
+if(NOT CMAKE_CSharp_COMPILER_NAMES)
+  set(CMAKE_CSharp_COMPILER_NAMES csc)
+endif()
+
+# Build a small source file to identify the compiler.
+if(NOT CMAKE_CSharp_COMPILER_ID_RUN)
+  set(CMAKE_CSharp_COMPILER_ID_RUN 1)
+
+  # Try to identify the compiler.
+  set(CMAKE_CSharp_COMPILER_ID_STRINGS_PARAMETERS ENCODING UTF-16LE)
+  set(CMAKE_CSharp_COMPILER_ID)
+  include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake)
+  CMAKE_DETERMINE_COMPILER_ID(CSharp CSFLAGS CMakeCSharpCompilerId.cs)
+
+  execute_process(COMMAND "${CMAKE_CSharp_COMPILER}" "/help /preferreduilang:en-US" OUTPUT_VARIABLE output)
+  string(REPLACE "\n" ";" output "${output}")
+  foreach(line ${output})
+    string(TOUPPER ${line} line)
+    string(REGEX REPLACE "^.*COMPILER.*VERSION[^\\.0-9]*([\\.0-9]+).*$" "\\1" version "${line}")
+    if(version AND NOT "x${line}" STREQUAL "x${version}")
+      set(CMAKE_CSharp_COMPILER_VERSION ${version})
+      break()
+    endif()
+  endforeach()
+  message(STATUS "The CSharp compiler version is ${CMAKE_CSharp_COMPILER_VERSION}")
+endif()
+
+# configure variables set in this file for fast reload later on
+configure_file(${CMAKE_ROOT}/Modules/CMakeCSharpCompiler.cmake.in
+  ${CMAKE_PLATFORM_INFO_DIR}/CMakeCSharpCompiler.cmake
+  @ONLY
+  )
diff --git a/share/cmake-3.10/Modules/CMakeDetermineCUDACompiler.cmake b/share/cmake-3.10/Modules/CMakeDetermineCUDACompiler.cmake
new file mode 100644
index 0000000..c9cd7e2
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeDetermineCUDACompiler.cmake
@@ -0,0 +1,218 @@
+# 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|[89][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
+set(CMAKE_CUDA_HOST_COMPILER "" CACHE FILEPATH "Host compiler to be used by nvcc")
+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)
+
+  # Try to identify the compiler.
+  set(CMAKE_CUDA_COMPILER_ID)
+  set(CMAKE_CUDA_PLATFORM_ID)
+  file(READ ${CMAKE_ROOT}/Modules/CMakePlatformId.h.in
+    CMAKE_CUDA_COMPILER_ID_PLATFORM_CONTENT)
+
+  list(APPEND CMAKE_CUDA_COMPILER_ID_MATCH_VENDORS NVIDIA)
+  set(CMAKE_CUDA_COMPILER_ID_MATCH_VENDOR_REGEX_NVIDIA "nvcc: NVIDIA \(R\) Cuda compiler driver")
+
+  set(CMAKE_CXX_COMPILER_ID_TOOL_MATCH_REGEX "\nLd[^\n]*(\n[ \t]+[^\n]*)*\n[ \t]+([^ \t\r\n]+)[^\r\n]*-o[^\r\n]*CompilerIdCUDA/(\\./)?(CompilerIdCUDA.xctest/)?CompilerIdCUDA[ \t\n\\\"]")
+  set(CMAKE_CXX_COMPILER_ID_TOOL_MATCH_INDEX 2)
+
+  set(CMAKE_CUDA_COMPILER_ID_FLAGS_ALWAYS -v --keep --keep-dir tmp)
+  if(CMAKE_CUDA_HOST_COMPILER)
+      list(APPEND CMAKE_CUDA_COMPILER_ID_FLAGS_ALWAYS "-ccbin=${CMAKE_CUDA_HOST_COMPILER}")
+  endif()
+
+  include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake)
+  CMAKE_DETERMINE_COMPILER_ID(CUDA CUDAFLAGS CMakeCUDACompilerId.cu)
+endif()
+
+include(CMakeFindBinUtils)
+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 "")
+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}")
+    # Split lines.
+    string(REGEX REPLACE "\n+(#\\\$ )?" ";" _nvcc_output "${_nvcc_output}")
+    foreach(line IN LISTS _nvcc_output)
+      set(_nvcc_output_line "${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}")
+
+    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 parsed CUDA nvcc implicit link information:\n${_nvcc_log}\n\n")
+    message(FATAL_ERROR "Failed to extract nvcc implicit link line.")
+  endif()
+
+  set(CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES )
+  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 UNIX_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()
+
+
+endif()
+
+# configure all variables set in this file
+configure_file(${CMAKE_ROOT}/Modules/CMakeCUDACompiler.cmake.in
+  ${CMAKE_PLATFORM_INFO_DIR}/CMakeCUDACompiler.cmake
+  @ONLY
+  )
+
+set(CMAKE_CUDA_COMPILER_ENV_VAR "CUDACXX")
+set(CMAKE_CUDA_HOST_COMPILER_ENV_VAR "CUDAHOSTCXX")
diff --git a/share/cmake-3.10/Modules/CMakeDetermineCXXCompiler.cmake b/share/cmake-3.10/Modules/CMakeDetermineCXXCompiler.cmake
new file mode 100644
index 0000000..4541844
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeDetermineCXXCompiler.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.
+
+
+# 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 "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++"
+    )
+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.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_DIAGNOSE_UNSUPPORTED_CLANG(CXX 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()
+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 (CMAKE_CROSSCOMPILING  AND NOT  _CMAKE_TOOLCHAIN_PREFIX)
+
+  if("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU" OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
+    get_filename_component(COMPILER_BASENAME "${CMAKE_CXX_COMPILER}" NAME)
+    if (COMPILER_BASENAME MATCHES "^(.+-)(clan)?[gc]\\+\\+(-[0-9]+\\.[0-9]+\\.[0-9]+)?(\\.exe)?$")
+      set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
+    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([^_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 ()
+
+include(CMakeFindBinUtils)
+set(_CMAKE_PROCESSING_LANGUAGE "CXX")
+include(Compiler/${CMAKE_CXX_COMPILER_ID}-FindBinUtils OPTIONAL)
+unset(_CMAKE_PROCESSING_LANGUAGE)
+
+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_CURRENT_ARCH)
+  set(SET_CMAKE_XCODE_CURRENT_ARCH
+    "set(CMAKE_XCODE_CURRENT_ARCH ${CMAKE_CXX_XCODE_CURRENT_ARCH})")
+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.10/Modules/CMakeDetermineCompileFeatures.cmake b/share/cmake-3.10/Modules/CMakeDetermineCompileFeatures.cmake
new file mode 100644
index 0000000..3ed92be
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeDetermineCompileFeatures.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.
+
+
+function(cmake_determine_compile_features lang)
+
+  if(lang STREQUAL C AND COMMAND cmake_record_c_compile_features)
+    message(STATUS "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(STATUS "Detecting ${lang} compile features - 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(STATUS "Detecting ${lang} compile features - done")
+
+  elseif(lang STREQUAL CXX AND COMMAND cmake_record_cxx_compile_features)
+    message(STATUS "Detecting ${lang} compile features")
+
+    set(CMAKE_CXX98_COMPILE_FEATURES)
+    set(CMAKE_CXX11_COMPILE_FEATURES)
+    set(CMAKE_CXX14_COMPILE_FEATURES)
+    set(CMAKE_CXX17_COMPILE_FEATURES)
+
+    include("${CMAKE_ROOT}/Modules/Internal/FeatureTesting.cmake")
+
+    cmake_record_cxx_compile_features()
+
+    if(NOT _result EQUAL 0)
+      message(STATUS "Detecting ${lang} compile features - failed")
+      return()
+    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}
+      )
+    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)
+
+    message(STATUS "Detecting ${lang} compile features - done")
+  endif()
+
+endfunction()
diff --git a/share/cmake-3.10/Modules/CMakeDetermineCompiler.cmake b/share/cmake-3.10/Modules/CMakeDetermineCompiler.cmake
new file mode 100644
index 0000000..c37adae
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeDetermineCompiler.cmake
@@ -0,0 +1,120 @@
+# 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()
+  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()
diff --git a/share/cmake-3.10/Modules/CMakeDetermineCompilerABI.cmake b/share/cmake-3.10/Modules/CMakeDetermineCompilerABI.cmake
new file mode 100644
index 0000000..604ac27
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeDetermineCompilerABI.cmake
@@ -0,0 +1,127 @@
+# 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/CMakeParseImplicitLinkInfo.cmake)
+
+function(CMAKE_DETERMINE_COMPILER_ABI lang src)
+  if(NOT DEFINED CMAKE_${lang}_ABI_COMPILED)
+    message(STATUS "Detecting ${lang} compiler ABI info")
+
+    # Compile the ABI identification source.
+    set(BIN "${CMAKE_PLATFORM_INFO_DIR}/CMakeDetermineCompilerABI_${lang}.bin")
+    set(CMAKE_FLAGS )
+    if(DEFINED CMAKE_${lang}_VERBOSE_FLAG)
+      set(CMAKE_FLAGS "-DEXE_LINKER_FLAGS=${CMAKE_${lang}_VERBOSE_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()
+    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"
+      OUTPUT_VARIABLE OUTPUT
+      COPY_FILE "${BIN}"
+      COPY_FILE_ERROR _copy_error
+      )
+    # Move result from cache to normal variable.
+    set(CMAKE_${lang}_ABI_COMPILED ${CMAKE_${lang}_ABI_COMPILED})
+    unset(CMAKE_${lang}_ABI_COMPILED CACHE)
+    set(CMAKE_${lang}_ABI_COMPILED ${CMAKE_${lang}_ABI_COMPILED} PARENT_SCOPE)
+
+    # Load the resulting information strings.
+    if(CMAKE_${lang}_ABI_COMPILED AND NOT _copy_error)
+      message(STATUS "Detecting ${lang} compiler ABI info - 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 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")
+        set(_desc "Determine Intel Fortran Compiler Implicit Link Path")
+        message(STATUS "${_desc}")
+        # 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)
+        set(_desc "Determine Intel Fortran Compiler Implicit Link Path -- done")
+        message(STATUS "${_desc}")
+      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()
+      endif()
+
+    else()
+      message(STATUS "Detecting ${lang} compiler ABI info - 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.10/Modules/CMakeDetermineCompilerId.cmake b/share/cmake-3.10/Modules/CMakeDetermineCompilerId.cmake
new file mode 100644
index 0000000..15c304c
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeDetermineCompilerId.cmake
@@ -0,0 +1,772 @@
+# 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})
+      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()
+
+  # 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 (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 STREQUAL "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()
+
+  # 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()
+    message(STATUS "The ${lang} compiler identification is "
+      "${CMAKE_${lang}_COMPILER_ID}${_version}")
+  else()
+    message(STATUS "The ${lang} compiler identification is unknown")
+  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}" PARENT_SCOPE)
+  elseif(NOT CMAKE_${lang}_COMPILER)
+    set(CMAKE_${lang}_COMPILER "CMAKE_${lang}_COMPILER-NOTFOUND" 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_CURRENT_ARCH "${CMAKE_${lang}_XCODE_CURRENT_ARCH}" PARENT_SCOPE)
+  set(CMAKE_${lang}_CL_SHOWINCLUDES_PREFIX "${CMAKE_${lang}_CL_SHOWINCLUDES_PREFIX}" 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}")
+    if(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()
+      endif()
+    else()
+      set(id_toolset "")
+    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)
+      set(id_system_version "<ApplicationTypeRevision>${CMAKE_SYSTEM_VERSION}</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(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")
+    set(id_PostBuildEvent_Command "for %%i in (${id_cl}) do %40echo CMAKE_${lang}_COMPILER=%%~$PATH:i")
+    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_PostBuildEvent_Command [[echo CMAKE_CUDA_COMPILER=$(CudaToolkitBinDir)\nvcc.exe]])
+      string(CONCAT id_Import_props [[<Import Project="$(VCTargetsPath)\BuildCustomizations\]] "${cuda_tools}" [[.props" />]])
+      string(CONCAT id_Import_targets [[<Import Project="$(VCTargetsPath)\BuildCustomizations\]] "${cuda_tools}" [[.targets" />]])
+      if(CMAKE_VS_PLATFORM_NAME STREQUAL x64)
+        set(id_ItemDefinitionGroup_entry "<CudaCompile><TargetMachinePlatform>64</TargetMachinePlatform></CudaCompile>")
+      endif()
+      set(id_Link_AdditionalDependencies "<AdditionalDependencies>cudart.lib</AdditionalDependencies>")
+    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 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")
+      endif()
+    else()
+      set(id_sdkroot "")
+    endif()
+    if(CMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM)
+      set(id_development_team
+        "DEVELOPMENT_TEAM = \"${CMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM}\";")
+    else()
+      set(id_development_team "")
+    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 "CURRENT_ARCH=([^%\r\n]+)[\r\n]")
+      set(CMAKE_${lang}_XCODE_CURRENT_ARCH "${CMAKE_MATCH_1}" PARENT_SCOPE)
+    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
+      )
+  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/*
+      )
+    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)
+    file(STRINGS ${file}
+      CMAKE_${lang}_COMPILER_ID_STRINGS LIMIT_COUNT 38
+      ${CMAKE_${lang}_COMPILER_ID_STRINGS_PARAMETERS}
+      REGEX "INFO:[A-Za-z0-9_]+\\[[^]]*\\]")
+    set(COMPILER_ID_TWICE)
+    # 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})
+      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)
+      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()
+
+    # 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 CAFEBABE or FEEDFACE, according to http://radio.weblogs.com/0100490/2003/01/28.html
+#    if("${CMAKE_EXECUTABLE_MAGIC}" MATCHES "cafebabe")
+#      set(CMAKE_EXECUTABLE_FORMAT "MACHO" CACHE STRING "Executable file format")
+#    endif()
+#    if("${CMAKE_EXECUTABLE_MAGIC}" MATCHES "feedface")
+#      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()
+
+
+  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)
+      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()
+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()
+
+function(CMAKE_DIAGNOSE_UNSUPPORTED_CLANG lang envvar)
+  if(NOT CMAKE_HOST_WIN32 OR CMAKE_GENERATOR MATCHES "Visual Studio" OR
+      NOT "${CMAKE_${lang}_COMPILER_ID};${CMAKE_${lang}_SIMULATE_ID}" STREQUAL "Clang;MSVC")
+    return()
+  endif()
+
+  # 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)
+    return()
+  endif()
+
+  # Help the user configure the environment to use the MSVC-like Clang.
+  string(CONCAT _msg
+    "The Clang compiler tool\n"
+    "  \"${CMAKE_${lang}_COMPILER}\"\n"
+    "targets the MSVC ABI but has a GNU-like command-line interface.  "
+    "This is not supported.  "
+    "Use 'clang-cl' instead, e.g. by setting '${envvar}=clang-cl' in the environment."
+    )
+  execute_process(COMMAND rc -help
+    RESULT_VARIABLE _rc_result
+    OUTPUT_VARIABLE _rc_stdout
+    ERROR_VARIABLE _rc_stderr)
+  if(NOT _rc_result EQUAL 0)
+    string(APPEND _msg "  "
+      "Furthermore, use the MSVC command-line environment."
+      )
+  endif()
+  message(FATAL_ERROR "${_msg}")
+endfunction()
diff --git a/share/cmake-3.10/Modules/CMakeDetermineFortranCompiler.cmake b/share/cmake-3.10/Modules/CMakeDetermineFortranCompiler.cmake
new file mode 100644
index 0000000..2549c22
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeDetermineFortranCompiler.cmake
@@ -0,0 +1,282 @@
+# 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.
+      set(CMAKE_Fortran_COMPILER_LIST
+        ftn
+        ifort ifc af95 af90 efc f95 pathf2003 pathf95 pgf95 pgfortran lf95 xlf95
+        fort flang gfortran gfortran-4 g95 f90 pathf90 pgf90 xlf90 epcf90 fort77
+        frt pgf77 xlf fl32 af77 g77 f77 nag
+        )
+
+      # 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)
+
+  # 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 (CMAKE_CROSSCOMPILING  AND 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 ()
+
+include(CMakeFindBinUtils)
+set(_CMAKE_PROCESSING_LANGUAGE "Fortran")
+include(Compiler/${CMAKE_Fortran_COMPILER_ID}-FindBinUtils OPTIONAL)
+unset(_CMAKE_PROCESSING_LANGUAGE)
+
+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.10/Modules/CMakeDetermineJavaCompiler.cmake b/share/cmake-3.10/Modules/CMakeDetermineJavaCompiler.cmake
new file mode 100644
index 0000000..3092bb5
--- /dev/null
+++ b/share/cmake-3.10/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 "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.10/Modules/CMakeDetermineRCCompiler.cmake b/share/cmake-3.10/Modules/CMakeDetermineRCCompiler.cmake
new file mode 100644
index 0000000..8801e16
--- /dev/null
+++ b/share/cmake-3.10/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 "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.10/Modules/CMakeDetermineSwiftCompiler.cmake b/share/cmake-3.10/Modules/CMakeDetermineSwiftCompiler.cmake
new file mode 100644
index 0000000..2604906
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeDetermineSwiftCompiler.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.
+
+
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake)
+
+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)
+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)
+
+  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 "\nCompileSwiftSources[^\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)
+
+  # 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 ()
+
+include(CMakeFindBinUtils)
+
+# 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
+  )
diff --git a/share/cmake-3.10/Modules/CMakeDetermineSystem.cmake b/share/cmake-3.10/Modules/CMakeDetermineSystem.cmake
new file mode 100644
index 0000000..20dcf1b
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeDetermineSystem.cmake
@@ -0,0 +1,190 @@
+# 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 determin 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
+# IRIX                          IRIX
+# 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$")
+      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.10/Modules/CMakeDetermineVSServicePack.cmake b/share/cmake-3.10/Modules/CMakeDetermineVSServicePack.cmake
new file mode 100644
index 0000000..0264621
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeDetermineVSServicePack.cmake
@@ -0,0 +1,172 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#.rst:
+# CMakeDetermineVSServicePack
+# ---------------------------
+#
+# Deprecated.  Do not use.
+#
+# The functionality of this module has been superseded by the
+# :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable that contains
+# the compiler version number.
+#
+# Determine the Visual Studio service pack of the 'cl' in use.
+#
+# Usage::
+#
+#   if(MSVC)
+#     include(CMakeDetermineVSServicePack)
+#     DetermineVSServicePack( my_service_pack )
+#     if( my_service_pack )
+#       message(STATUS "Detected: ${my_service_pack}")
+#     endif()
+#   endif()
+#
+# Function DetermineVSServicePack sets the given variable to one of the
+# following values or an empty string if unknown::
+#
+#   vc80, vc80sp1
+#   vc90, vc90sp1
+#   vc100, vc100sp1
+#   vc110, vc110sp1, vc110sp2, vc110sp3, vc110sp4
+
+if(NOT CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.8)
+  message(DEPRECATION
+    "This module is deprecated and should not be used.  "
+    "Use the CMAKE_<LANG>_COMPILER_VERSION variable instead."
+    )
+endif()
+
+# [INTERNAL]
+# Please do not call this function directly
+function(_DetermineVSServicePackFromCompiler _OUT_VAR _cl_version)
+   if    (${_cl_version} VERSION_EQUAL "14.00.50727.42")
+       set(_version "vc80")
+   elseif(${_cl_version} VERSION_EQUAL "14.00.50727.762")
+       set(_version "vc80sp1")
+   elseif(${_cl_version} VERSION_EQUAL "15.00.21022.08")
+       set(_version "vc90")
+   elseif(${_cl_version} VERSION_EQUAL "15.00.30729.01")
+       set(_version "vc90sp1")
+   elseif(${_cl_version} VERSION_EQUAL "16.00.30319.01")
+       set(_version "vc100")
+   elseif(${_cl_version} VERSION_EQUAL "16.00.40219.01")
+       set(_version "vc100sp1")
+   elseif(${_cl_version} VERSION_EQUAL "17.00.50727.1")
+       set(_version "vc110")
+   elseif(${_cl_version} VERSION_EQUAL "17.00.51106.1")
+       set(_version "vc110sp1")
+   elseif(${_cl_version} VERSION_EQUAL "17.00.60315.1")
+       set(_version "vc110sp2")
+   elseif(${_cl_version} VERSION_EQUAL "17.00.60610.1")
+       set(_version "vc110sp3")
+   elseif(${_cl_version} VERSION_EQUAL "17.00.61030")
+       set(_version "vc110sp4")
+   else()
+       set(_version "")
+   endif()
+   set(${_OUT_VAR} ${_version} PARENT_SCOPE)
+endfunction()
+
+
+############################################################
+# [INTERNAL]
+# Please do not call this function directly
+function(_DetermineVSServicePack_FastCheckVersionWithCompiler _SUCCESS_VAR  _VERSION_VAR)
+    if(EXISTS ${CMAKE_CXX_COMPILER})
+      execute_process(
+          COMMAND ${CMAKE_CXX_COMPILER} /?
+          ERROR_VARIABLE _output
+          OUTPUT_QUIET
+        )
+
+      if(_output MATCHES "Compiler Version (([0-9]+)\\.([0-9]+)\\.([0-9]+)(\\.([0-9]+))?)")
+        set(_cl_version ${CMAKE_MATCH_1})
+        set(_major ${CMAKE_MATCH_2})
+        set(_minor ${CMAKE_MATCH_3})
+        if("${_major}${_minor}" STREQUAL "${MSVC_VERSION}")
+          set(${_SUCCESS_VAR} true PARENT_SCOPE)
+          set(${_VERSION_VAR} ${_cl_version} PARENT_SCOPE)
+        endif()
+      endif()
+    endif()
+endfunction()
+
+############################################################
+# [INTERNAL]
+# Please do not call this function directly
+function(_DetermineVSServicePack_CheckVersionWithTryCompile _SUCCESS_VAR  _VERSION_VAR)
+    file(WRITE "${CMAKE_BINARY_DIR}/return0.cc"
+      "int main() { return 0; }\n")
+
+    try_compile(
+      _CompileResult
+      "${CMAKE_BINARY_DIR}"
+      "${CMAKE_BINARY_DIR}/return0.cc"
+      OUTPUT_VARIABLE _output
+      COPY_FILE "${CMAKE_BINARY_DIR}/return0.cc")
+
+    file(REMOVE "${CMAKE_BINARY_DIR}/return0.cc")
+
+    if(_output MATCHES "Compiler Version (([0-9]+)\\.([0-9]+)\\.([0-9]+)(\\.([0-9]+))?)")
+      set(${_SUCCESS_VAR} true PARENT_SCOPE)
+      set(${_VERSION_VAR} "${CMAKE_MATCH_1}" PARENT_SCOPE)
+    endif()
+endfunction()
+
+############################################################
+# [INTERNAL]
+# Please do not call this function directly
+function(_DetermineVSServicePack_CheckVersionWithTryRun _SUCCESS_VAR  _VERSION_VAR)
+    file(WRITE "${CMAKE_BINARY_DIR}/return0.cc"
+        "#include <stdio.h>\n\nconst unsigned int CompilerVersion=_MSC_FULL_VER;\n\nint main(int argc, char* argv[])\n{\n  int M( CompilerVersion/10000000);\n  int m((CompilerVersion%10000000)/100000);\n  int b(CompilerVersion%100000);\n\n  printf(\"%d.%02d.%05d.01\",M,m,b);\n return 0;\n}\n")
+
+    try_run(
+        _RunResult
+        _CompileResult
+        "${CMAKE_BINARY_DIR}"
+        "${CMAKE_BINARY_DIR}/return0.cc"
+        RUN_OUTPUT_VARIABLE  _runoutput
+        )
+
+    file(REMOVE "${CMAKE_BINARY_DIR}/return0.cc")
+
+    string(REGEX MATCH "[0-9]+.[0-9]+.[0-9]+.[0-9]+"
+        _cl_version "${_runoutput}")
+
+    if(_cl_version)
+      set(${_SUCCESS_VAR} true PARENT_SCOPE)
+      set(${_VERSION_VAR} ${_cl_version} PARENT_SCOPE)
+    endif()
+endfunction()
+
+
+#
+# A function to call to determine the Visual Studio service pack
+# in use.  See documentation above.
+function(DetermineVSServicePack _pack)
+    if(NOT DETERMINED_VS_SERVICE_PACK OR NOT ${_pack})
+
+        _DetermineVSServicePack_FastCheckVersionWithCompiler(DETERMINED_VS_SERVICE_PACK _cl_version)
+        if(NOT DETERMINED_VS_SERVICE_PACK)
+            _DetermineVSServicePack_CheckVersionWithTryCompile(DETERMINED_VS_SERVICE_PACK _cl_version)
+            if(NOT DETERMINED_VS_SERVICE_PACK)
+                _DetermineVSServicePack_CheckVersionWithTryRun(DETERMINED_VS_SERVICE_PACK _cl_version)
+            endif()
+        endif()
+
+        if(DETERMINED_VS_SERVICE_PACK)
+
+            if(_cl_version)
+                # Call helper function to determine VS version
+                _DetermineVSServicePackFromCompiler(_sp "${_cl_version}")
+                if(_sp)
+                    set(${_pack} ${_sp} CACHE INTERNAL
+                        "The Visual Studio Release with Service Pack")
+                endif()
+            endif()
+        endif()
+    endif()
+endfunction()
+
diff --git a/share/cmake-3.10/Modules/CMakeExpandImportedTargets.cmake b/share/cmake-3.10/Modules/CMakeExpandImportedTargets.cmake
new file mode 100644
index 0000000..ad065f0
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeExpandImportedTargets.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:
+# CMakeExpandImportedTargets
+# --------------------------
+#
+# Deprecated.  Do not use.
+#
+# This module was once needed to expand imported targets to the underlying
+# libraries they reference on disk for use with the :command:`try_compile`
+# and :command:`try_run` commands.  These commands now support imported
+# libraries in their ``LINK_LIBRARIES`` options (since CMake 2.8.11
+# for :command:`try_compile` and since CMake 3.2 for :command:`try_run`).
+#
+# This module does not support the policy :policy:`CMP0022` ``NEW``
+# behavior or use of the :prop_tgt:`INTERFACE_LINK_LIBRARIES` property
+# because :manual:`generator expressions <cmake-generator-expressions(7)>`
+# cannot be evaluated during configuration.
+#
+# ::
+#
+#  CMAKE_EXPAND_IMPORTED_TARGETS(<var> LIBRARIES lib1 lib2...libN
+#                                [CONFIGURATION <config>])
+#
+# CMAKE_EXPAND_IMPORTED_TARGETS() takes a list of libraries and replaces
+# all imported targets contained in this list with their actual file
+# paths of the referenced libraries on disk, including the libraries
+# from their link interfaces.  If a CONFIGURATION is given, it uses the
+# respective configuration of the imported targets if it exists.  If no
+# CONFIGURATION is given, it uses the first configuration from
+# ${CMAKE_CONFIGURATION_TYPES} if set, otherwise ${CMAKE_BUILD_TYPE}.
+#
+# ::
+#
+#     cmake_expand_imported_targets(expandedLibs
+#       LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}
+#       CONFIGURATION "${CMAKE_TRY_COMPILE_CONFIGURATION}" )
+
+function(CMAKE_EXPAND_IMPORTED_TARGETS _RESULT )
+
+   set(options )
+   set(oneValueArgs CONFIGURATION )
+   set(multiValueArgs LIBRARIES )
+
+   cmake_parse_arguments(CEIT "${options}" "${oneValueArgs}" "${multiValueArgs}"  ${ARGN})
+
+   if(CEIT_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unknown keywords given to CMAKE_EXPAND_IMPORTED_TARGETS(): \"${CEIT_UNPARSED_ARGUMENTS}\"")
+   endif()
+
+   if(NOT CEIT_CONFIGURATION)
+      if(CMAKE_CONFIGURATION_TYPES)
+         list(GET CMAKE_CONFIGURATION_TYPES 0 CEIT_CONFIGURATION)
+      else()
+         set(CEIT_CONFIGURATION ${CMAKE_BUILD_TYPE})
+      endif()
+   endif()
+
+   # handle imported library targets
+
+   set(_CCSR_REQ_LIBS ${CEIT_LIBRARIES})
+
+   set(_CHECK_FOR_IMPORTED_TARGETS TRUE)
+   set(_CCSR_LOOP_COUNTER 0)
+   while(_CHECK_FOR_IMPORTED_TARGETS)
+      math(EXPR _CCSR_LOOP_COUNTER "${_CCSR_LOOP_COUNTER} + 1 ")
+      set(_CCSR_NEW_REQ_LIBS )
+      set(_CHECK_FOR_IMPORTED_TARGETS FALSE)
+      foreach(_CURRENT_LIB ${_CCSR_REQ_LIBS})
+         if(TARGET "${_CURRENT_LIB}")
+           get_target_property(_importedConfigs "${_CURRENT_LIB}" IMPORTED_CONFIGURATIONS)
+         else()
+           set(_importedConfigs "")
+         endif()
+         if (_importedConfigs)
+#            message(STATUS "Detected imported target ${_CURRENT_LIB}")
+            # Ok, so this is an imported target.
+            # First we get the imported configurations.
+            # Then we get the location of the actual library on disk of the first configuration.
+            # then we'll get its link interface libraries property,
+            # iterate through it and replace all imported targets we find there
+            # with there actual location.
+
+            # guard against infinite loop: abort after 100 iterations ( 100 is arbitrary chosen)
+            if ("${_CCSR_LOOP_COUNTER}" LESS 100)
+               set(_CHECK_FOR_IMPORTED_TARGETS TRUE)
+#                else ()
+#                   message(STATUS "********* aborting loop, counter : ${_CCSR_LOOP_COUNTER}")
+            endif ()
+
+            # if one of the imported configurations equals ${CMAKE_TRY_COMPILE_CONFIGURATION},
+            # use it, otherwise simply use the first one:
+            list(FIND _importedConfigs "${CEIT_CONFIGURATION}" _configIndexToUse)
+            if("${_configIndexToUse}" EQUAL -1)
+              set(_configIndexToUse 0)
+            endif()
+            list(GET _importedConfigs ${_configIndexToUse} _importedConfigToUse)
+
+            get_target_property(_importedLocation "${_CURRENT_LIB}" IMPORTED_LOCATION_${_importedConfigToUse})
+            get_target_property(_linkInterfaceLibs "${_CURRENT_LIB}" IMPORTED_LINK_INTERFACE_LIBRARIES_${_importedConfigToUse} )
+
+            list(APPEND _CCSR_NEW_REQ_LIBS  "${_importedLocation}")
+#            message(STATUS "Appending lib ${_CURRENT_LIB} as ${_importedLocation}")
+            if(_linkInterfaceLibs)
+               foreach(_currentLinkInterfaceLib ${_linkInterfaceLibs})
+#                  message(STATUS "Appending link interface lib ${_currentLinkInterfaceLib}")
+                  if(_currentLinkInterfaceLib)
+                     list(APPEND _CCSR_NEW_REQ_LIBS "${_currentLinkInterfaceLib}" )
+                  endif()
+               endforeach()
+            endif()
+         else()
+            # "Normal" libraries are just used as they are.
+            list(APPEND _CCSR_NEW_REQ_LIBS "${_CURRENT_LIB}" )
+#            message(STATUS "Appending lib directly: ${_CURRENT_LIB}")
+         endif()
+      endforeach()
+
+      set(_CCSR_REQ_LIBS ${_CCSR_NEW_REQ_LIBS} )
+   endwhile()
+
+   # Finally we iterate once more over all libraries. This loop only removes
+   # all remaining imported target names (there shouldn't be any left anyway).
+   set(_CCSR_NEW_REQ_LIBS )
+   foreach(_CURRENT_LIB ${_CCSR_REQ_LIBS})
+      if(TARGET "${_CURRENT_LIB}")
+        get_target_property(_importedConfigs "${_CURRENT_LIB}" IMPORTED_CONFIGURATIONS)
+      else()
+        set(_importedConfigs "")
+      endif()
+      if (NOT _importedConfigs)
+         list(APPEND _CCSR_NEW_REQ_LIBS "${_CURRENT_LIB}" )
+#         message(STATUS "final: appending ${_CURRENT_LIB}")
+      else ()
+#             message(STATUS "final: skipping ${_CURRENT_LIB}")
+      endif ()
+   endforeach()
+#   message(STATUS "setting -${_RESULT}- to -${_CCSR_NEW_REQ_LIBS}-")
+   set(${_RESULT} "${_CCSR_NEW_REQ_LIBS}" PARENT_SCOPE)
+
+endfunction()
diff --git a/share/cmake-3.10/Modules/CMakeExportBuildSettings.cmake b/share/cmake-3.10/Modules/CMakeExportBuildSettings.cmake
new file mode 100644
index 0000000..cafc830
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeExportBuildSettings.cmake
@@ -0,0 +1,26 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This module is purposely no longer documented.  It does nothing useful.
+if(NOT "${CMAKE_MINIMUM_REQUIRED_VERSION}" VERSION_LESS 2.7)
+  message(FATAL_ERROR
+    "The functionality of this module has been dropped as of CMake 2.8.  "
+    "It was deemed harmful (confusing users by changing their compiler).  "
+    "Please remove calls to the CMAKE_EXPORT_BUILD_SETTINGS macro and "
+    "stop including this module.  "
+    "If this project generates any files for use by external projects, "
+    "remove any use of the CMakeImportBuildSettings module from them.")
+endif()
+
+# This macro used to store build settings of a project in a file to be
+# loaded by another project using CMAKE_IMPORT_BUILD_SETTINGS.  Now it
+# creates a file that refuses to load (with comment explaining why).
+macro(CMAKE_EXPORT_BUILD_SETTINGS SETTINGS_FILE)
+  if(NOT ${SETTINGS_FILE} STREQUAL "")
+    configure_file(${CMAKE_ROOT}/Modules/CMakeBuildSettings.cmake.in
+                   ${SETTINGS_FILE} @ONLY)
+  else()
+    message(SEND_ERROR "CMAKE_EXPORT_BUILD_SETTINGS called with no argument.")
+  endif()
+endmacro()
diff --git a/share/cmake-3.10/Modules/CMakeExtraGeneratorDetermineCompilerMacrosAndIncludeDirs.cmake b/share/cmake-3.10/Modules/CMakeExtraGeneratorDetermineCompilerMacrosAndIncludeDirs.cmake
new file mode 100644
index 0000000..3a72622
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeExtraGeneratorDetermineCompilerMacrosAndIncludeDirs.cmake
@@ -0,0 +1,113 @@
+# 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 ()
+  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)
+      list(APPEND ${_resultDefines} "${_value}")
+    else()
+      list(APPEND ${_resultDefines} " ")
+    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.10/Modules/CMakeFindBinUtils.cmake b/share/cmake-3.10/Modules/CMakeFindBinUtils.cmake
new file mode 100644
index 0000000..e4103d0
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeFindBinUtils.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.
+
+
+# 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_STRIP
+#   CMAKE_INSTALL_NAME_TOOL
+
+# on UNIX, cygwin and mingw
+
+# if it's the MS C/CXX compiler, search for link
+if("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC"
+   OR "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC"
+   OR "x${CMAKE_Fortran_SIMULATE_ID}" STREQUAL "xMSVC"
+   OR "x${CMAKE_C_COMPILER_ID}" STREQUAL "xMSVC"
+   OR "x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC"
+   OR "x${CMAKE_CUDA_SIMULATE_ID}" STREQUAL "xMSVC"
+   OR (CMAKE_HOST_WIN32 AND (
+        "x${CMAKE_C_COMPILER_ID}" STREQUAL "xPGI"
+         OR "x${CMAKE_Fortran_COMPILER_ID}" STREQUAL "xPGI"
+   ))
+   OR (CMAKE_GENERATOR MATCHES "Visual Studio"
+       AND NOT CMAKE_VS_PLATFORM_NAME STREQUAL "Tegra-Android"))
+
+  find_program(CMAKE_LINKER NAMES link HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
+
+  mark_as_advanced(CMAKE_LINKER)
+
+# 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()
+  find_program(CMAKE_AR NAMES ${_CMAKE_TOOLCHAIN_PREFIX}ar${_CMAKE_TOOLCHAIN_SUFFIX} HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
+
+  find_program(CMAKE_RANLIB NAMES ${_CMAKE_TOOLCHAIN_PREFIX}ranlib 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} HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
+  find_program(CMAKE_LINKER NAMES ${_CMAKE_TOOLCHAIN_PREFIX}ld HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
+  find_program(CMAKE_NM NAMES ${_CMAKE_TOOLCHAIN_PREFIX}nm HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
+  find_program(CMAKE_OBJDUMP NAMES ${_CMAKE_TOOLCHAIN_PREFIX}objdump HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
+  find_program(CMAKE_OBJCOPY NAMES ${_CMAKE_TOOLCHAIN_PREFIX}objcopy HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
+
+  mark_as_advanced(CMAKE_AR CMAKE_RANLIB CMAKE_STRIP CMAKE_LINKER CMAKE_NM CMAKE_OBJDUMP CMAKE_OBJCOPY)
+
+endif()
+
+if(CMAKE_PLATFORM_HAS_INSTALLNAME)
+  find_program(CMAKE_INSTALL_NAME_TOOL NAMES 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()
+
+  mark_as_advanced(CMAKE_INSTALL_NAME_TOOL)
+endif()
diff --git a/share/cmake-3.10/Modules/CMakeFindCodeBlocks.cmake b/share/cmake-3.10/Modules/CMakeFindCodeBlocks.cmake
new file mode 100644
index 0000000..b76e5c5
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeFindCodeBlocks.cmake
@@ -0,0 +1,30 @@
+# 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 in CMakeSystemSpecificInformation.cmake if
+# the CodeBlocks extra generator has been selected.
+
+find_program(CMAKE_CODEBLOCKS_EXECUTABLE NAMES codeblocks DOC "The CodeBlocks executable")
+
+if(CMAKE_CODEBLOCKS_EXECUTABLE)
+   set(CMAKE_OPEN_PROJECT_COMMAND "${CMAKE_CODEBLOCKS_EXECUTABLE} <PROJECT_FILE>" )
+endif()
+
+# Determine builtin macros and include dirs:
+include(${CMAKE_CURRENT_LIST_DIR}/CMakeExtraGeneratorDetermineCompilerMacrosAndIncludeDirs.cmake)
+
+# Try to find out how many CPUs we have and set the -j argument for make accordingly
+set(_CMAKE_CODEBLOCKS_INITIAL_MAKE_ARGS "")
+
+include(ProcessorCount)
+processorcount(_CMAKE_CODEBLOCKS_PROCESSOR_COUNT)
+
+# Only set -j if we are under UNIX and if the make-tool used actually has "make" in the name
+# (we may also get here in the future e.g. for ninja)
+if("${_CMAKE_CODEBLOCKS_PROCESSOR_COUNT}" GREATER 1  AND  CMAKE_HOST_UNIX  AND  "${CMAKE_MAKE_PROGRAM}" MATCHES make)
+  set(_CMAKE_CODEBLOCKS_INITIAL_MAKE_ARGS "-j${_CMAKE_CODEBLOCKS_PROCESSOR_COUNT}")
+endif()
+
+# This variable is used by the CodeBlocks generator and appended to the make invocation commands.
+set(CMAKE_CODEBLOCKS_MAKE_ARGUMENTS "${_CMAKE_CODEBLOCKS_INITIAL_MAKE_ARGS}" CACHE STRING "Additional command line arguments when CodeBlocks invokes make. Enter e.g. -j<some_number> to get parallel builds")
diff --git a/share/cmake-3.10/Modules/CMakeFindDependencyMacro.cmake b/share/cmake-3.10/Modules/CMakeFindDependencyMacro.cmake
new file mode 100644
index 0000000..6a89fff
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeFindDependencyMacro.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.
+
+#[=======================================================================[.rst:
+CMakeFindDependencyMacro
+-------------------------
+
+.. command:: find_dependency
+
+  The ``find_dependency()`` macro wraps a :command:`find_package` call for
+  a package dependency::
+
+    find_dependency(<dep> [...])
+
+  It is designed to be used in a
+  :ref:`Package Configuration File <Config File Packages>`
+  (``<package>Config.cmake``).  ``find_dependency`` forwards the correct
+  parameters for ``QUIET`` and ``REQUIRED`` which were passed to
+  the original :command:`find_package` call.  Any additional arguments
+  specified are forwarded to :command:`find_package`.
+
+  If the dependency could not be found it sets an informative diagnostic
+  message and calls :command:`return` to end processing of the calling
+  package configuration file and return to the :command:`find_package`
+  command that loaded it.
+
+  .. note::
+
+    The call to :command:`return` makes this macro unsuitable to call
+    from :ref:`Find Modules`.
+#]=======================================================================]
+
+macro(find_dependency dep)
+  if (NOT ${dep}_FOUND)
+    set(cmake_fd_quiet_arg)
+    if(${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY)
+      set(cmake_fd_quiet_arg QUIET)
+    endif()
+    set(cmake_fd_required_arg)
+    if(${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED)
+      set(cmake_fd_required_arg REQUIRED)
+    endif()
+
+    get_property(cmake_fd_alreadyTransitive GLOBAL PROPERTY
+      _CMAKE_${dep}_TRANSITIVE_DEPENDENCY
+    )
+
+    find_package(${dep} ${ARGN}
+      ${cmake_fd_quiet_arg}
+      ${cmake_fd_required_arg}
+    )
+
+    if(NOT DEFINED cmake_fd_alreadyTransitive OR cmake_fd_alreadyTransitive)
+      set_property(GLOBAL PROPERTY _CMAKE_${dep}_TRANSITIVE_DEPENDENCY TRUE)
+    endif()
+
+    if (NOT ${dep}_FOUND)
+      set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "${CMAKE_FIND_PACKAGE_NAME} could not be found because dependency ${dep} could not be found.")
+      set(${CMAKE_FIND_PACKAGE_NAME}_FOUND False)
+      return()
+    endif()
+    set(cmake_fd_required_arg)
+    set(cmake_fd_quiet_arg)
+    set(cmake_fd_exact_arg)
+  endif()
+endmacro()
diff --git a/share/cmake-3.10/Modules/CMakeFindEclipseCDT4.cmake b/share/cmake-3.10/Modules/CMakeFindEclipseCDT4.cmake
new file mode 100644
index 0000000..199005d
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeFindEclipseCDT4.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.
+
+
+# This file is included in CMakeSystemSpecificInformation.cmake if
+# the Eclipse CDT4 extra generator has been selected.
+
+find_program(CMAKE_ECLIPSE_EXECUTABLE NAMES eclipse DOC "The Eclipse executable")
+
+function(_FIND_ECLIPSE_VERSION)
+  # This code is in a function so the variables used here have only local scope
+
+  # Set up a map with the names of the Eclipse releases:
+  set(_ECLIPSE_VERSION_NAME_    "Unknown" )
+  set(_ECLIPSE_VERSION_NAME_3.2 "Callisto" )
+  set(_ECLIPSE_VERSION_NAME_3.3 "Europa" )
+  set(_ECLIPSE_VERSION_NAME_3.4 "Ganymede" )
+  set(_ECLIPSE_VERSION_NAME_3.5 "Galileo" )
+  set(_ECLIPSE_VERSION_NAME_3.6 "Helios" )
+  set(_ECLIPSE_VERSION_NAME_3.7 "Indigo" )
+  set(_ECLIPSE_VERSION_NAME_4.2 "Juno" )
+  set(_ECLIPSE_VERSION_NAME_4.3 "Kepler" )
+  set(_ECLIPSE_VERSION_NAME_4.4 "Luna" )
+  set(_ECLIPSE_VERSION_NAME_4.5 "Mars" )
+
+  if(NOT DEFINED CMAKE_ECLIPSE_VERSION)
+    if(CMAKE_ECLIPSE_EXECUTABLE)
+      # use REALPATH to resolve symlinks (https://gitlab.kitware.com/cmake/cmake/issues/13036)
+      get_filename_component(_REALPATH_CMAKE_ECLIPSE_EXECUTABLE "${CMAKE_ECLIPSE_EXECUTABLE}" REALPATH)
+      get_filename_component(_ECLIPSE_DIR "${_REALPATH_CMAKE_ECLIPSE_EXECUTABLE}" PATH)
+      file(GLOB _ECLIPSE_FEATURE_DIR "${_ECLIPSE_DIR}/features/org.eclipse.platform*")
+      if(APPLE AND NOT _ECLIPSE_FEATURE_DIR)
+        file(GLOB _ECLIPSE_FEATURE_DIR "${_ECLIPSE_DIR}/../../../features/org.eclipse.platform*")
+      endif()
+      if("${_ECLIPSE_FEATURE_DIR}" MATCHES ".+org.eclipse.platform_([0-9]+\\.[0-9]+).+")
+        set(_ECLIPSE_VERSION ${CMAKE_MATCH_1})
+      endif()
+    endif()
+
+    if(_ECLIPSE_VERSION)
+      message(STATUS "Found Eclipse version ${_ECLIPSE_VERSION} (${_ECLIPSE_VERSION_NAME_${_ECLIPSE_VERSION}})")
+    else()
+      set(_ECLIPSE_VERSION "3.6" )
+      message(STATUS "Could not determine Eclipse version, assuming at least ${_ECLIPSE_VERSION} (${_ECLIPSE_VERSION_NAME_${_ECLIPSE_VERSION}}). Adjust CMAKE_ECLIPSE_VERSION if this is wrong.")
+    endif()
+
+    set(CMAKE_ECLIPSE_VERSION "${_ECLIPSE_VERSION} (${_ECLIPSE_VERSION_NAME_${_ECLIPSE_VERSION}})" CACHE STRING "The version of Eclipse. If Eclipse has not been found, 3.6 (Helios) is assumed.")
+  else()
+    message(STATUS "Eclipse version is set to ${CMAKE_ECLIPSE_VERSION}. Adjust CMAKE_ECLIPSE_VERSION if this is wrong.")
+  endif()
+
+  set_property(CACHE CMAKE_ECLIPSE_VERSION PROPERTY STRINGS "3.2 (${_ECLIPSE_VERSION_NAME_3.2})"
+                                                            "3.3 (${_ECLIPSE_VERSION_NAME_3.3})"
+                                                            "3.4 (${_ECLIPSE_VERSION_NAME_3.4})"
+                                                            "3.5 (${_ECLIPSE_VERSION_NAME_3.5})"
+                                                            "3.6 (${_ECLIPSE_VERSION_NAME_3.6})"
+                                                            "3.7 (${_ECLIPSE_VERSION_NAME_3.7})"
+                                                            "4.2 (${_ECLIPSE_VERSION_NAME_4.2})"
+                                                            "4.3 (${_ECLIPSE_VERSION_NAME_4.3})"
+                                                            "4.4 (${_ECLIPSE_VERSION_NAME_4.4})"
+                                                            "4.5 (${_ECLIPSE_VERSION_NAME_4.5})"
+              )
+endfunction()
+
+_find_eclipse_version()
+
+# Try to find out how many CPUs we have and set the -j argument for make accordingly
+set(_CMAKE_ECLIPSE_INITIAL_MAKE_ARGS "")
+
+include(ProcessorCount)
+processorcount(_CMAKE_ECLIPSE_PROCESSOR_COUNT)
+
+# Only set -j if we are under UNIX and if the make-tool used actually has "make" in the name
+# (we may also get here in the future e.g. for ninja)
+if("${_CMAKE_ECLIPSE_PROCESSOR_COUNT}" GREATER 1  AND  CMAKE_HOST_UNIX  AND  "${CMAKE_MAKE_PROGRAM}" MATCHES make)
+  set(_CMAKE_ECLIPSE_INITIAL_MAKE_ARGS "-j${_CMAKE_ECLIPSE_PROCESSOR_COUNT}")
+endif()
+
+# This variable is used by the Eclipse generator and appended to the make invocation commands.
+set(CMAKE_ECLIPSE_MAKE_ARGUMENTS "${_CMAKE_ECLIPSE_INITIAL_MAKE_ARGS}" CACHE STRING "Additional command line arguments when Eclipse invokes make. Enter e.g. -j<some_number> to get parallel builds")
+
+set(CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES TRUE CACHE BOOL "If disabled, CMake will not generate linked resource to the subprojects and to the source files within targets")
+
+# This variable is used by the Eclipse generator in out-of-source builds only.
+set(CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT FALSE CACHE BOOL "If enabled, CMake will generate a source project for Eclipse in CMAKE_SOURCE_DIR")
+mark_as_advanced(CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT)
+
+# Determine builtin macros and include dirs:
+include(${CMAKE_CURRENT_LIST_DIR}/CMakeExtraGeneratorDetermineCompilerMacrosAndIncludeDirs.cmake)
diff --git a/share/cmake-3.10/Modules/CMakeFindFrameworks.cmake b/share/cmake-3.10/Modules/CMakeFindFrameworks.cmake
new file mode 100644
index 0000000..6c4c527
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeFindFrameworks.cmake
@@ -0,0 +1,32 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#.rst:
+# CMakeFindFrameworks
+# -------------------
+#
+# helper module to find OSX frameworks
+#
+# This module reads hints about search locations from variables::
+#
+#   CMAKE_FIND_FRAMEWORK_EXTRA_LOCATIONS - Extra directories
+
+if(NOT CMAKE_FIND_FRAMEWORKS_INCLUDED)
+  set(CMAKE_FIND_FRAMEWORKS_INCLUDED 1)
+  macro(CMAKE_FIND_FRAMEWORKS fwk)
+    set(${fwk}_FRAMEWORKS)
+    if(APPLE)
+      foreach(dir
+          ~/Library/Frameworks/${fwk}.framework
+          /usr/local/Frameworks/${fwk}.framework
+          /Library/Frameworks/${fwk}.framework
+          /System/Library/Frameworks/${fwk}.framework
+          /Network/Library/Frameworks/${fwk}.framework
+          ${CMAKE_FIND_FRAMEWORK_EXTRA_LOCATIONS})
+        if(EXISTS ${dir})
+          set(${fwk}_FRAMEWORKS ${${fwk}_FRAMEWORKS} ${dir})
+        endif()
+      endforeach()
+    endif()
+  endmacro()
+endif()
diff --git a/share/cmake-3.10/Modules/CMakeFindJavaCommon.cmake b/share/cmake-3.10/Modules/CMakeFindJavaCommon.cmake
new file mode 100644
index 0000000..46b6280
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeFindJavaCommon.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.
+
+
+# Do not include this module directly from code outside CMake!
+set(_JAVA_HOME "")
+if(JAVA_HOME AND IS_DIRECTORY "${JAVA_HOME}")
+  set(_JAVA_HOME "${JAVA_HOME}")
+  set(_JAVA_HOME_EXPLICIT 1)
+else()
+  set(_ENV_JAVA_HOME "")
+  if(DEFINED ENV{JAVA_HOME})
+    file(TO_CMAKE_PATH "$ENV{JAVA_HOME}" _ENV_JAVA_HOME)
+  endif()
+  if(_ENV_JAVA_HOME AND IS_DIRECTORY "${_ENV_JAVA_HOME}")
+    set(_JAVA_HOME "${_ENV_JAVA_HOME}")
+    set(_JAVA_HOME_EXPLICIT 1)
+  else()
+    set(_CMD_JAVA_HOME "")
+    if(APPLE AND EXISTS /usr/libexec/java_home)
+      execute_process(COMMAND /usr/libexec/java_home
+        OUTPUT_VARIABLE _CMD_JAVA_HOME OUTPUT_STRIP_TRAILING_WHITESPACE)
+    endif()
+    if(_CMD_JAVA_HOME AND IS_DIRECTORY "${_CMD_JAVA_HOME}")
+      set(_JAVA_HOME "${_CMD_JAVA_HOME}")
+      set(_JAVA_HOME_EXPLICIT 0)
+    endif()
+    unset(_CMD_JAVA_HOME)
+  endif()
+  unset(_ENV_JAVA_HOME)
+endif()
diff --git a/share/cmake-3.10/Modules/CMakeFindKDevelop3.cmake b/share/cmake-3.10/Modules/CMakeFindKDevelop3.cmake
new file mode 100644
index 0000000..488acf7
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeFindKDevelop3.cmake
@@ -0,0 +1,13 @@
+# 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 in CMakeSystemSpecificInformation.cmake if
+# the KDevelop3 extra generator has been selected.
+
+find_program(CMAKE_KDEVELOP3_EXECUTABLE NAMES kdevelop DOC "The KDevelop3 executable")
+
+if(CMAKE_KDEVELOP3_EXECUTABLE)
+   set(CMAKE_OPEN_PROJECT_COMMAND "${CMAKE_KDEVELOP3_EXECUTABLE} <PROJECT_FILE>" )
+endif()
+
diff --git a/share/cmake-3.10/Modules/CMakeFindKate.cmake b/share/cmake-3.10/Modules/CMakeFindKate.cmake
new file mode 100644
index 0000000..9aaf6e5
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeFindKate.cmake
@@ -0,0 +1,21 @@
+# 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 in CMakeSystemSpecificInformation.cmake if
+# the Eclipse CDT4 extra generator has been selected.
+
+
+# Try to find out how many CPUs we have and set the -j argument for make accordingly
+
+include(ProcessorCount)
+processorcount(_CMAKE_KATE_PROCESSOR_COUNT)
+
+# Only set -j if we are under UNIX and if the make-tool used actually has "make" in the name
+# (we may also get here in the future e.g. for ninja)
+if("${_CMAKE_KATE_PROCESSOR_COUNT}" GREATER 1  AND  CMAKE_HOST_UNIX  AND  "${CMAKE_MAKE_PROGRAM}" MATCHES make)
+  set(_CMAKE_KATE_INITIAL_MAKE_ARGS "-j${_CMAKE_KATE_PROCESSOR_COUNT}")
+endif()
+
+# This variable is used by the Eclipse generator and appended to the make invocation commands.
+set(CMAKE_KATE_MAKE_ARGUMENTS "${_CMAKE_KATE_INITIAL_MAKE_ARGS}" CACHE STRING "Additional command line arguments when Kate invokes make. Enter e.g. -j<some_number> to get parallel builds")
diff --git a/share/cmake-3.10/Modules/CMakeFindPackageMode.cmake b/share/cmake-3.10/Modules/CMakeFindPackageMode.cmake
new file mode 100644
index 0000000..1261137
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeFindPackageMode.cmake
@@ -0,0 +1,201 @@
+# 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/Fortan/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()
+
+# 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.10/Modules/CMakeFindWMake.cmake b/share/cmake-3.10/Modules/CMakeFindWMake.cmake
new file mode 100644
index 0000000..a20d069
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeFindWMake.cmake
@@ -0,0 +1,7 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+set (CMAKE_MAKE_PROGRAM "wmake" CACHE STRING
+     "Program used to build from makefiles.")
+mark_as_advanced(CMAKE_MAKE_PROGRAM)
diff --git a/share/cmake-3.10/Modules/CMakeFindXCode.cmake b/share/cmake-3.10/Modules/CMakeFindXCode.cmake
new file mode 100644
index 0000000..281af96
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeFindXCode.cmake
@@ -0,0 +1,6 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# Empty placeholder for input dependencies in existing
+# build trees produced by older versions of CMake.
diff --git a/share/cmake-3.10/Modules/CMakeForceCompiler.cmake b/share/cmake-3.10/Modules/CMakeForceCompiler.cmake
new file mode 100644
index 0000000..1bc80fd
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeForceCompiler.cmake
@@ -0,0 +1,108 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#.rst:
+# CMakeForceCompiler
+# ------------------
+#
+# Deprecated.  Do not use.
+#
+# The macros provided by this module were once intended for use by
+# cross-compiling toolchain files when CMake was not able to automatically
+# detect the compiler identification.  Since the introduction of this module,
+# CMake's compiler identification capabilities have improved and can now be
+# taught to recognize any compiler.  Furthermore, the suite of information
+# CMake detects from a compiler is now too extensive to be provided by
+# toolchain files using these macros.
+#
+# One common use case for this module was to skip CMake's checks for a
+# working compiler when using a cross-compiler that cannot link binaries
+# without special flags or custom linker scripts.  This case is now supported
+# by setting the :variable:`CMAKE_TRY_COMPILE_TARGET_TYPE` variable in the
+# toolchain file instead.
+#
+# -------------------------------------------------------------------------
+#
+# Macro CMAKE_FORCE_C_COMPILER has the following signature:
+#
+# ::
+#
+#    CMAKE_FORCE_C_COMPILER(<compiler> <compiler-id>)
+#
+# It sets CMAKE_C_COMPILER to the given compiler and the cmake internal
+# variable CMAKE_C_COMPILER_ID to the given compiler-id.  It also
+# bypasses the check for working compiler and basic compiler information
+# tests.
+#
+# Macro CMAKE_FORCE_CXX_COMPILER has the following signature:
+#
+# ::
+#
+#    CMAKE_FORCE_CXX_COMPILER(<compiler> <compiler-id>)
+#
+# It sets CMAKE_CXX_COMPILER to the given compiler and the cmake
+# internal variable CMAKE_CXX_COMPILER_ID to the given compiler-id.  It
+# also bypasses the check for working compiler and basic compiler
+# information tests.
+#
+# Macro CMAKE_FORCE_Fortran_COMPILER has the following signature:
+#
+# ::
+#
+#    CMAKE_FORCE_Fortran_COMPILER(<compiler> <compiler-id>)
+#
+# It sets CMAKE_Fortran_COMPILER to the given compiler and the cmake
+# internal variable CMAKE_Fortran_COMPILER_ID to the given compiler-id.
+# It also bypasses the check for working compiler and basic compiler
+# information tests.
+#
+# So a simple toolchain file could look like this:
+#
+# ::
+#
+#    include (CMakeForceCompiler)
+#    set(CMAKE_SYSTEM_NAME Generic)
+#    CMAKE_FORCE_C_COMPILER   (chc12 MetrowerksHicross)
+#    CMAKE_FORCE_CXX_COMPILER (chc12 MetrowerksHicross)
+
+macro(CMAKE_FORCE_C_COMPILER compiler id)
+  message(DEPRECATION "The CMAKE_FORCE_C_COMPILER macro is deprecated.  "
+    "Instead just set CMAKE_C_COMPILER and allow CMake to identify the compiler.")
+  set(CMAKE_C_COMPILER "${compiler}")
+  set(CMAKE_C_COMPILER_ID_RUN TRUE)
+  set(CMAKE_C_COMPILER_ID ${id})
+  set(CMAKE_C_COMPILER_FORCED TRUE)
+
+  # Set old compiler id variables.
+  if(CMAKE_C_COMPILER_ID MATCHES "GNU")
+    set(CMAKE_COMPILER_IS_GNUCC 1)
+  endif()
+endmacro()
+
+macro(CMAKE_FORCE_CXX_COMPILER compiler id)
+  message(DEPRECATION "The CMAKE_FORCE_CXX_COMPILER macro is deprecated.  "
+    "Instead just set CMAKE_CXX_COMPILER and allow CMake to identify the compiler.")
+  set(CMAKE_CXX_COMPILER "${compiler}")
+  set(CMAKE_CXX_COMPILER_ID_RUN TRUE)
+  set(CMAKE_CXX_COMPILER_ID ${id})
+  set(CMAKE_CXX_COMPILER_FORCED TRUE)
+
+  # Set old compiler id variables.
+  if("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
+    set(CMAKE_COMPILER_IS_GNUCXX 1)
+  endif()
+endmacro()
+
+macro(CMAKE_FORCE_Fortran_COMPILER compiler id)
+  message(DEPRECATION "The CMAKE_FORCE_Fortran_COMPILER macro is deprecated.  "
+    "Instead just set CMAKE_Fortran_COMPILER and allow CMake to identify the compiler.")
+  set(CMAKE_Fortran_COMPILER "${compiler}")
+  set(CMAKE_Fortran_COMPILER_ID_RUN TRUE)
+  set(CMAKE_Fortran_COMPILER_ID ${id})
+  set(CMAKE_Fortran_COMPILER_FORCED TRUE)
+
+  # Set old compiler id variables.
+  if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
+    set(CMAKE_COMPILER_IS_GNUG77 1)
+  endif()
+endmacro()
diff --git a/share/cmake-3.10/Modules/CMakeFortranCompiler.cmake.in b/share/cmake-3.10/Modules/CMakeFortranCompiler.cmake.in
new file mode 100644
index 0000000..2e34cbb
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeFortranCompiler.cmake.in
@@ -0,0 +1,66 @@
+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_COMPILER_ARCHITECTURE_ID@
+@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;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_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.6/Modules/CMakeFortranCompilerABI.F b/share/cmake-3.10/Modules/CMakeFortranCompilerABI.F
similarity index 100%
rename from share/cmake-3.6/Modules/CMakeFortranCompilerABI.F
rename to share/cmake-3.10/Modules/CMakeFortranCompilerABI.F
diff --git a/share/cmake-3.10/Modules/CMakeFortranCompilerId.F.in b/share/cmake-3.10/Modules/CMakeFortranCompilerId.F.in
new file mode 100644
index 0000000..49789f1
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeFortranCompilerId.F.in
@@ -0,0 +1,220 @@
+      PROGRAM CMakeFortranCompilerId
+#if 0
+! Identify the compiler
+#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
+
+# 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
+#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(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)
+        PRINT *, 'INFO:compiler[MIPSpro]'
+#       if 0
+!       This compiler is either not known or is too old to define an
+!       identification macro.  Try to identify the platform and guess that
+!       it is the native compiler.
+#       endif
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+        PRINT *, 'INFO:compiler[VisualAge]'
+#elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
+        PRINT *, 'INFO:compiler[MIPSpro]'
+#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 1
+#       if 0
+!       The above 'elif 1' instead of 'else' is to work around a bug in the
+!       SGI preprocessor which produces both the __sgi and else blocks.
+#       endif
+        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(__sgi) || defined(__sgi__) || defined(_SGI)
+        PRINT *, 'INFO:platform[IRIX]'
+#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]'
+#elif 1
+#       if 0
+!       The above 'elif 1' instead of 'else' is to work around a bug in the
+!       SGI preprocessor which produces both the __sgi and else blocks.
+#       endif
+        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.10/Modules/CMakeFortranInformation.cmake b/share/cmake-3.10/Modules/CMakeFortranInformation.cmake
new file mode 100644
index 0000000..8005da6
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeFortranInformation.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.
+
+
+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_SYSTEM_NAME}-${CMAKE_Fortran_COMPILER_ID}-Fortran OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
+endif()
+if (NOT _INCLUDED_FILE)
+  include(Platform/${CMAKE_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()
+
+
+# Fortran needs cmake to do a requires step during its build process to
+# catch any modules
+set(CMAKE_NEEDS_REQUIRES_STEP_Fortran_FLAG 1)
+
+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_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(NOT CMAKE_INCLUDE_FLAG_SEP_Fortran)
+  set(CMAKE_INCLUDE_FLAG_SEP_Fortran ${CMAKE_INCLUDE_FLAG_SEP_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}")
+
+foreach(c "" _DEBUG _RELEASE _MINSIZEREL _RELWITHDEBINFO)
+  string(STRIP "${CMAKE_Fortran_FLAGS${c}_INIT}" CMAKE_Fortran_FLAGS${c}_INIT)
+endforeach()
+
+set (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS_INIT}" CACHE STRING
+     "Flags for Fortran compiler.")
+
+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()
+
+if(NOT CMAKE_NOT_USING_CONFIG_FLAGS)
+  set (CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG_INIT}" CACHE STRING
+     "Flags used by the compiler during debug builds.")
+  set (CMAKE_Fortran_FLAGS_MINSIZEREL "${CMAKE_Fortran_FLAGS_MINSIZEREL_INIT}" CACHE STRING
+     "Flags used by the compiler during release builds for minimum size.")
+  set (CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE_INIT}" CACHE STRING
+     "Flags used by the compiler during release builds.")
+  set (CMAKE_Fortran_FLAGS_RELWITHDEBINFO "${CMAKE_Fortran_FLAGS_RELWITHDEBINFO_INIT}" CACHE STRING
+     "Flags used by the compiler during release builds with debug info.")
+
+endif()
+
+mark_as_advanced(
+CMAKE_Fortran_FLAGS
+CMAKE_Fortran_FLAGS_DEBUG
+CMAKE_Fortran_FLAGS_MINSIZEREL
+CMAKE_Fortran_FLAGS_RELEASE
+CMAKE_Fortran_FLAGS_RELWITHDEBINFO)
+
+# set this variable so we can avoid loading this more than once.
+set(CMAKE_Fortran_INFORMATION_LOADED 1)
diff --git a/share/cmake-3.10/Modules/CMakeGenericSystem.cmake b/share/cmake-3.10/Modules/CMakeGenericSystem.cmake
new file mode 100644
index 0000000..324a279
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeGenericSystem.cmake
@@ -0,0 +1,184 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+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_INCLUDE_FLAG_C_SEP "")     # , or empty
+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_AUTOMOC_COMPILER_PREDEFINES ON)
+set(CMAKE_AUTOMOC_MACRO_NAMES "Q_OBJECT" "Q_GADGET" "Q_NAMESPACE")
+
+# 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()
+  if(CMAKE_GENERATOR MATCHES "Unix Makefiles")
+    set(CMAKE_EXPORT_COMPILE_COMMANDS OFF CACHE BOOL
+      "Enable/Disable output of compile commands during generation."
+      )
+    mark_as_advanced(CMAKE_EXPORT_COMPILE_COMMANDS)
+  endif()
+endif()
+
+if(CMAKE_GENERATOR MATCHES "Ninja")
+  set(CMAKE_EXPORT_COMPILE_COMMANDS OFF 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.10/Modules/CMakeGraphVizOptions.cmake b/share/cmake-3.10/Modules/CMakeGraphVizOptions.cmake
new file mode 100644
index 0000000..0d7f1d9
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeGraphVizOptions.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.
+
+#.rst:
+# CMakeGraphVizOptions
+# --------------------
+#
+# The builtin graphviz support of CMake.
+#
+# Variables specific to the graphviz support
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+#
+# CMake
+# can generate `graphviz <http://www.graphviz.org/>`_ files, showing the dependencies between the
+# targets in a project and also external libraries which are linked
+# against.  When CMake is run with the ``--graphviz=foo.dot`` option, it will
+# produce:
+#
+# * a ``foo.dot`` file showing all dependencies in the project
+# * a ``foo.dot.<target>`` file for each target, file showing on which other targets the respective target depends
+# * a ``foo.dot.<target>.dependers`` file, showing which other targets depend on the respective target
+#
+# The different dependency types ``PUBLIC``, ``PRIVATE`` and ``INTERFACE``
+# are represented as solid, dashed and dotted edges.
+#
+# This can result in huge graphs.  Using the file
+# ``CMakeGraphVizOptions.cmake`` the look and content of the generated
+# graphs can be influenced.  This file is searched first in
+# :variable:`CMAKE_BINARY_DIR` and then in :variable:`CMAKE_SOURCE_DIR`.  If found, it is
+# read and the variables set in it are used to adjust options for the
+# generated graphviz files.
+#
+# .. variable:: GRAPHVIZ_GRAPH_TYPE
+#
+#  The graph type.
+#
+#  * Mandatory : NO
+#  * Default   : "digraph"
+#
+#  Valid graph types are:
+#
+#  * "graph" : Nodes are joined with lines
+#  * "digraph" : Nodes are joined with arrows showing direction
+#  * "strict graph" : Like "graph" but max one line between each node
+#  * "strict digraph" : Like "graph" but max one line between each node in each direction
+#
+# .. variable:: GRAPHVIZ_GRAPH_NAME
+#
+#  The graph name.
+#
+#  * Mandatory : NO
+#  * Default   : "GG"
+#
+# .. variable:: GRAPHVIZ_GRAPH_HEADER
+#
+#  The header written at the top of the graphviz file.
+#
+#  * Mandatory : NO
+#  * Default   : "node [n  fontsize = "12"];"
+#
+# .. variable:: GRAPHVIZ_NODE_PREFIX
+#
+#  The prefix for each node in the graphviz file.
+#
+#  * Mandatory : NO
+#  * Default   : "node"
+#
+# .. variable:: GRAPHVIZ_EXECUTABLES
+#
+#  Set this to FALSE to exclude executables from the generated graphs.
+#
+#  * Mandatory : NO
+#  * Default   : TRUE
+#
+# .. variable:: GRAPHVIZ_STATIC_LIBS
+#
+#  Set this to FALSE to exclude static libraries from the generated graphs.
+#
+#  * Mandatory : NO
+#  * Default   : TRUE
+#
+# .. variable:: GRAPHVIZ_SHARED_LIBS
+#
+#  Set this to FALSE to exclude shared libraries from the generated graphs.
+#
+#  * Mandatory : NO
+#  * Default   : TRUE
+#
+# .. variable:: GRAPHVIZ_MODULE_LIBS
+#
+#  Set this to FALSE to exclude module libraries from the generated graphs.
+#
+#  * Mandatory : NO
+#  * Default   : TRUE
+#
+# .. variable:: GRAPHVIZ_EXTERNAL_LIBS
+#
+#  Set this to FALSE to exclude external libraries from the generated graphs.
+#
+#  * Mandatory : NO
+#  * Default   : TRUE
+#
+# .. variable:: GRAPHVIZ_IGNORE_TARGETS
+#
+#  A list of regular expressions for ignoring targets.
+#
+#  * Mandatory : NO
+#  * Default   : empty
+#
+# .. variable:: GRAPHVIZ_GENERATE_PER_TARGET
+#
+#  Set this to FALSE to exclude per target graphs ``foo.dot.<target>``.
+#
+#  * Mandatory : NO
+#  * Default   : TRUE
+#
+# .. variable:: GRAPHVIZ_GENERATE_DEPENDERS
+#
+#  Set this to FALSE to exclude depender graphs ``foo.dot.<target>.dependers``.
+#
+#  * Mandatory : NO
+#  * Default   : TRUE
diff --git a/share/cmake-3.10/Modules/CMakeIOSInstallCombined.cmake b/share/cmake-3.10/Modules/CMakeIOSInstallCombined.cmake
new file mode 100644
index 0000000..fad2e8f
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeIOSInstallCombined.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.
+
+
+# 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(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)
+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)
+  cmake_policy(SET CMP0057 NEW)
+
+  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()
diff --git a/share/cmake-3.10/Modules/CMakeImportBuildSettings.cmake b/share/cmake-3.10/Modules/CMakeImportBuildSettings.cmake
new file mode 100644
index 0000000..ec1effb
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeImportBuildSettings.cmake
@@ -0,0 +1,13 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This module is purposely no longer documented.  It does nothing useful.
+
+# This macro used to load build settings from another project that
+# stored settings using the CMAKE_EXPORT_BUILD_SETTINGS macro.
+macro(CMAKE_IMPORT_BUILD_SETTINGS SETTINGS_FILE)
+  if("${SETTINGS_FILE}" STREQUAL "")
+    message(SEND_ERROR "CMAKE_IMPORT_BUILD_SETTINGS called with no argument.")
+  endif()
+endmacro()
diff --git a/share/cmake-3.10/Modules/CMakeJOMFindMake.cmake b/share/cmake-3.10/Modules/CMakeJOMFindMake.cmake
new file mode 100644
index 0000000..f56a588
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeJOMFindMake.cmake
@@ -0,0 +1,7 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+set (CMAKE_MAKE_PROGRAM "jom" CACHE STRING
+     "Program used to build from makefiles.")
+mark_as_advanced(CMAKE_MAKE_PROGRAM)
diff --git a/share/cmake-3.6/Modules/CMakeJavaCompiler.cmake.in b/share/cmake-3.10/Modules/CMakeJavaCompiler.cmake.in
similarity index 100%
rename from share/cmake-3.6/Modules/CMakeJavaCompiler.cmake.in
rename to share/cmake-3.10/Modules/CMakeJavaCompiler.cmake.in
diff --git a/share/cmake-3.10/Modules/CMakeJavaInformation.cmake b/share/cmake-3.10/Modules/CMakeJavaInformation.cmake
new file mode 100644
index 0000000..844bbbb
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeJavaInformation.cmake
@@ -0,0 +1,49 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# 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_Java)
+  # Save the full path of the file so try_compile can use it.
+   include(${CMAKE_USER_MAKE_RULES_OVERRIDE_Java} RESULT_VARIABLE _override)
+   set(CMAKE_USER_MAKE_RULES_OVERRIDE_Java "${_override}")
+endif()
+
+# this is a place holder if java needed flags for javac they would go here.
+if(NOT CMAKE_Java_CREATE_STATIC_LIBRARY)
+#  if(WIN32)
+#    set(class_files_mask "*.class")
+#  else()
+    set(class_files_mask ".")
+#  endif()
+
+  set(CMAKE_Java_CREATE_STATIC_LIBRARY
+      "<CMAKE_Java_ARCHIVE> -cf <TARGET> -C <OBJECT_DIR> ${class_files_mask}")
+    # "${class_files_mask}" should really be "<OBJECTS>" but compling a *.java
+    # file can create more than one *.class file...
+endif()
+
+# compile a Java file into an object file
+if(NOT CMAKE_Java_COMPILE_OBJECT)
+  set(CMAKE_Java_COMPILE_OBJECT
+    "<CMAKE_Java_COMPILER> <FLAGS> <SOURCE> -d <OBJECT_DIR>")
+endif()
+
+# set java include flag option and the separator for multiple include paths
+set(CMAKE_INCLUDE_FLAG_Java "-classpath ")
+if(WIN32 AND NOT CYGWIN)
+  set(CMAKE_INCLUDE_FLAG_SEP_Java ";")
+else()
+  set(CMAKE_INCLUDE_FLAG_SEP_Java ":")
+endif()
diff --git a/share/cmake-3.10/Modules/CMakeLanguageInformation.cmake b/share/cmake-3.10/Modules/CMakeLanguageInformation.cmake
new file mode 100644
index 0000000..18c8624
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeLanguageInformation.cmake
@@ -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.
+
+
+# This file contains common code blocks used by all the language information
+# files
+
+# load any compiler-wrapper specific information
+macro(__cmake_include_compiler_wrapper lang)
+  set(_INCLUDED_WRAPPER_FILE 0)
+  if (CMAKE_${lang}_COMPILER_ID)
+    include(Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_${lang}_COMPILER_WRAPPER}-${CMAKE_${lang}_COMPILER_ID}-${lang} OPTIONAL RESULT_VARIABLE _INCLUDED_WRAPPER_FILE)
+  endif()
+  if (NOT _INCLUDED_WRAPPER_FILE)
+    include(Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_${lang}_COMPILER_WRAPPER}-${lang} OPTIONAL RESULT_VARIABLE _INCLUDED_WRAPPER_FILE)
+  endif ()
+
+  # No platform - wrapper - lang information so maybe there's just wrapper - lang information
+  if(NOT _INCLUDED_WRAPPER_FILE)
+    if (CMAKE_${lang}_COMPILER_ID)
+      include(Compiler/${CMAKE_${lang}_COMPILER_WRAPPER}-${CMAKE_${lang}_COMPILER_ID}-${lang} OPTIONAL RESULT_VARIABLE _INCLUDED_WRAPPER_FILE)
+    endif()
+    if (NOT _INCLUDED_WRAPPER_FILE)
+      include(Compiler/${CMAKE_${lang}_COMPILER_WRAPPER}-${lang} OPTIONAL RESULT_VARIABLE _INCLUDED_WRAPPER_FILE)
+    endif ()
+  endif ()
+endmacro ()
diff --git a/share/cmake-3.10/Modules/CMakeMSYSFindMake.cmake b/share/cmake-3.10/Modules/CMakeMSYSFindMake.cmake
new file mode 100644
index 0000000..33b02c9
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeMSYSFindMake.cmake
@@ -0,0 +1,10 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+find_program(CMAKE_MAKE_PROGRAM make
+  PATHS
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MSYS-1.0_is1;Inno Setup: App Path]/bin"
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MinGW;InstallLocation]/bin"
+  c:/msys/1.0/bin /msys/1.0/bin)
+mark_as_advanced(CMAKE_MAKE_PROGRAM)
diff --git a/share/cmake-3.10/Modules/CMakeMinGWFindMake.cmake b/share/cmake-3.10/Modules/CMakeMinGWFindMake.cmake
new file mode 100644
index 0000000..523f00c
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeMinGWFindMake.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.
+
+
+find_program(CMAKE_MAKE_PROGRAM mingw32-make.exe PATHS
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MinGW;InstallLocation]/bin"
+  c:/MinGW/bin /MinGW/bin
+  "[HKEY_CURRENT_USER\\Software\\CodeBlocks;Path]/MinGW/bin"
+  )
+find_program(CMAKE_SH sh.exe )
+if(CMAKE_SH)
+  message(FATAL_ERROR "sh.exe was found in your PATH, here:\n${CMAKE_SH}\nFor MinGW make to work correctly sh.exe must NOT be in your path.\nRun cmake from a shell that does not have sh.exe in your PATH.\nIf you want to use a UNIX shell, then use MSYS Makefiles.\n")
+  set(CMAKE_MAKE_PROGRAM NOTFOUND)
+endif()
+
+mark_as_advanced(CMAKE_MAKE_PROGRAM CMAKE_SH)
diff --git a/share/cmake-3.10/Modules/CMakeNMakeFindMake.cmake b/share/cmake-3.10/Modules/CMakeNMakeFindMake.cmake
new file mode 100644
index 0000000..0335744
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeNMakeFindMake.cmake
@@ -0,0 +1,7 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+set (CMAKE_MAKE_PROGRAM "nmake" CACHE STRING
+     "Program used to build from makefiles.")
+mark_as_advanced(CMAKE_MAKE_PROGRAM)
diff --git a/share/cmake-3.10/Modules/CMakeNinjaFindMake.cmake b/share/cmake-3.10/Modules/CMakeNinjaFindMake.cmake
new file mode 100644
index 0000000..6a0c47e
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeNinjaFindMake.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.
+
+
+find_program(CMAKE_MAKE_PROGRAM
+  NAMES ninja-build ninja
+  DOC "Program used to build from build.ninja files.")
+mark_as_advanced(CMAKE_MAKE_PROGRAM)
diff --git a/share/cmake-3.10/Modules/CMakePackageConfigHelpers.cmake b/share/cmake-3.10/Modules/CMakePackageConfigHelpers.cmake
new file mode 100644
index 0000000..90c2a57
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakePackageConfigHelpers.cmake
@@ -0,0 +1,314 @@
+# 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 ``<Name>Config.cmake``
+# or ``<Name>-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(<package_name>)`` should be called at the end of
+# the ``FooConfig.cmake`` file if the package supports components.  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.
+# 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|ExactVersion> )
+#
+#
+# Writes a file for use as ``<package>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 ``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.
+#
+# Internally, this macro executes :command:`configure_file()` to create the
+# resulting version file.  Depending on the ``COMPATIBLITY``, either the file
+# ``BasicConfigVersion-SameMajorVersion.cmake.in`` or
+# ``BasicConfigVersion-AnyNewerVersion.cmake.in`` is used.  Please note that
+# these two 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.10/Modules/CMakeParseArguments.cmake b/share/cmake-3.10/Modules/CMakeParseArguments.cmake
new file mode 100644
index 0000000..7ee2bba
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeParseArguments.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.
+
+#.rst:
+# CMakeParseArguments
+# -------------------
+#
+# This module once implemented the :command:`cmake_parse_arguments` command
+# that is now implemented natively by CMake.  It is now an empty placeholder
+# for compatibility with projects that include it to get the command from
+# CMake 3.4 and lower.
diff --git a/share/cmake-3.10/Modules/CMakeParseImplicitLinkInfo.cmake b/share/cmake-3.10/Modules/CMakeParseImplicitLinkInfo.cmake
new file mode 100644
index 0000000..63d18ab
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeParseImplicitLinkInfo.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.
+
+
+# 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)
+    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.*|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()
diff --git a/share/cmake-3.10/Modules/CMakePlatformId.h.in b/share/cmake-3.10/Modules/CMakePlatformId.h.in
new file mode 100644
index 0000000..dd77379
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakePlatformId.h.in
@@ -0,0 +1,237 @@
+#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(__sgi) || defined(__sgi__) || defined(_SGI)
+# define PLATFORM_ID "IRIX"
+
+#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"
+
+# else /* unknown platform */
+#  define PLATFORM_ID
+# 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(__ICCAVR__)
+#  define ARCHITECTURE_ID "AVR"
+
+# 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.10/Modules/CMakePrintHelpers.cmake b/share/cmake-3.10/Modules/CMakePrintHelpers.cmake
new file mode 100644
index 0000000..21c333e
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakePrintHelpers.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.
+
+#.rst:
+# CMakePrintHelpers
+# -----------------
+#
+# Convenience macros 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 macro 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_DIRS)
+#
+# This will print the LOCATION and INTERFACE_INCLUDE_DIRS properties for
+# both targets foo and bar.
+#
+#
+#
+# CMAKE_PRINT_VARIABLES(var1 var2 ..  varN)
+#
+# This macro 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.10/Modules/CMakePrintSystemInformation.cmake b/share/cmake-3.10/Modules/CMakePrintSystemInformation.cmake
new file mode 100644
index 0000000..e74c801
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakePrintSystemInformation.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.
+
+#.rst:
+# CMakePrintSystemInformation
+# ---------------------------
+#
+# print system information
+#
+# This file can be used for diagnostic purposes just include it in a
+# project to see various internal CMake variables.
+
+message("CMAKE_SYSTEM is ${CMAKE_SYSTEM} ${CMAKE_SYSTEM_NAME} ${CMAKE_SYSTEM_VERSION}")
+message("CMAKE_SYSTEM file is ${CMAKE_SYSTEM_INFO_FILE}")
+message("CMAKE_C_COMPILER is ${CMAKE_C_COMPILER}")
+message("CMAKE_CXX_COMPILER is ${CMAKE_CXX_COMPILER}")
+
+
+message("CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS is ${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS}")
+message("CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS is ${CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS}")
+message("CMAKE_DL_LIBS is ${CMAKE_DL_LIBS}")
+message("CMAKE_SHARED_LIBRARY_PREFIX is ${CMAKE_SHARED_LIBRARY_PREFIX}")
+message("CMAKE_SHARED_LIBRARY_SUFFIX is ${CMAKE_SHARED_LIBRARY_SUFFIX}")
+message("CMAKE_COMPILER_IS_GNUCC = ${CMAKE_COMPILER_IS_GNUCC}")
+message("CMAKE_COMPILER_IS_GNUCXX = ${CMAKE_COMPILER_IS_GNUCXX}")
+
+message("CMAKE_CXX_CREATE_SHARED_LIBRARY is ${CMAKE_CXX_CREATE_SHARED_LIBRARY}")
+message("CMAKE_CXX_CREATE_SHARED_MODULE is ${CMAKE_CXX_CREATE_SHARED_MODULE}")
+message("CMAKE_CXX_CREATE_STATIC_LIBRARY is ${CMAKE_CXX_CREATE_STATIC_LIBRARY}")
+message("CMAKE_CXX_COMPILE_OBJECT is ${CMAKE_CXX_COMPILE_OBJECT}")
+message("CMAKE_CXX_LINK_EXECUTABLE ${CMAKE_CXX_LINK_EXECUTABLE}")
+
+message("CMAKE_C_CREATE_SHARED_LIBRARY is ${CMAKE_C_CREATE_SHARED_LIBRARY}")
+message("CMAKE_C_CREATE_SHARED_MODULE is ${CMAKE_C_CREATE_SHARED_MODULE}")
+message("CMAKE_C_CREATE_STATIC_LIBRARY is ${CMAKE_C_CREATE_STATIC_LIBRARY}")
+message("CMAKE_C_COMPILE_OBJECT is ${CMAKE_C_COMPILE_OBJECT}")
+message("CMAKE_C_LINK_EXECUTABLE ${CMAKE_C_LINK_EXECUTABLE}")
+
+message("CMAKE_SYSTEM_AND_CXX_COMPILER_INFO_FILE ${CMAKE_SYSTEM_AND_CXX_COMPILER_INFO_FILE}")
+message("CMAKE_SYSTEM_AND_C_COMPILER_INFO_FILE ${CMAKE_SYSTEM_AND_C_COMPILER_INFO_FILE}")
diff --git a/share/cmake-3.10/Modules/CMakePushCheckState.cmake b/share/cmake-3.10/Modules/CMakePushCheckState.cmake
new file mode 100644
index 0000000..98eea05
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakePushCheckState.cmake
@@ -0,0 +1,86 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#.rst:
+# CMakePushCheckState
+# -------------------
+#
+#
+#
+# This module defines three macros: CMAKE_PUSH_CHECK_STATE()
+# CMAKE_POP_CHECK_STATE() and CMAKE_RESET_CHECK_STATE() These macros can
+# be used to save, restore and reset (i.e., clear contents) the state of
+# the variables CMAKE_REQUIRED_FLAGS, CMAKE_REQUIRED_DEFINITIONS,
+# CMAKE_REQUIRED_LIBRARIES, CMAKE_REQUIRED_INCLUDES and CMAKE_EXTRA_INCLUDE_FILES
+# used by the various Check-files coming with CMake, like e.g.
+# check_function_exists() etc.  The variable contents are pushed on a
+# stack, pushing multiple times is supported.  This is useful e.g.  when
+# executing such tests in a Find-module, where they have to be set, but
+# after the Find-module has been executed they should have the same
+# value as they had before.
+#
+# CMAKE_PUSH_CHECK_STATE() macro receives optional argument RESET.
+# Whether it's specified, CMAKE_PUSH_CHECK_STATE() will set all
+# CMAKE_REQUIRED_* variables to empty values, same as
+# CMAKE_RESET_CHECK_STATE() call will do.
+#
+# Usage:
+#
+# ::
+#
+#    cmake_push_check_state(RESET)
+#    set(CMAKE_REQUIRED_DEFINITIONS -DSOME_MORE_DEF)
+#    check_function_exists(...)
+#    cmake_reset_check_state()
+#    set(CMAKE_REQUIRED_DEFINITIONS -DANOTHER_DEF)
+#    check_function_exists(...)
+#    cmake_pop_check_state()
+
+macro(CMAKE_RESET_CHECK_STATE)
+
+   set(CMAKE_EXTRA_INCLUDE_FILES)
+   set(CMAKE_REQUIRED_INCLUDES)
+   set(CMAKE_REQUIRED_DEFINITIONS)
+   set(CMAKE_REQUIRED_LIBRARIES)
+   set(CMAKE_REQUIRED_FLAGS)
+   set(CMAKE_REQUIRED_QUIET)
+
+endmacro()
+
+macro(CMAKE_PUSH_CHECK_STATE)
+
+   if(NOT DEFINED _CMAKE_PUSH_CHECK_STATE_COUNTER)
+      set(_CMAKE_PUSH_CHECK_STATE_COUNTER 0)
+   endif()
+
+   math(EXPR _CMAKE_PUSH_CHECK_STATE_COUNTER "${_CMAKE_PUSH_CHECK_STATE_COUNTER}+1")
+
+   set(_CMAKE_EXTRA_INCLUDE_FILES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}  ${CMAKE_EXTRA_INCLUDE_FILES})
+   set(_CMAKE_REQUIRED_INCLUDES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}    ${CMAKE_REQUIRED_INCLUDES})
+   set(_CMAKE_REQUIRED_DEFINITIONS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_REQUIRED_DEFINITIONS})
+   set(_CMAKE_REQUIRED_LIBRARIES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}   ${CMAKE_REQUIRED_LIBRARIES})
+   set(_CMAKE_REQUIRED_FLAGS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}       ${CMAKE_REQUIRED_FLAGS})
+   set(_CMAKE_REQUIRED_QUIET_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}       ${CMAKE_REQUIRED_QUIET})
+
+   if (${ARGC} GREATER 0 AND "${ARGV0}" STREQUAL "RESET")
+      cmake_reset_check_state()
+   endif()
+
+endmacro()
+
+macro(CMAKE_POP_CHECK_STATE)
+
+# don't pop more than we pushed
+   if("${_CMAKE_PUSH_CHECK_STATE_COUNTER}" GREATER "0")
+
+      set(CMAKE_EXTRA_INCLUDE_FILES  ${_CMAKE_EXTRA_INCLUDE_FILES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
+      set(CMAKE_REQUIRED_INCLUDES    ${_CMAKE_REQUIRED_INCLUDES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
+      set(CMAKE_REQUIRED_DEFINITIONS ${_CMAKE_REQUIRED_DEFINITIONS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
+      set(CMAKE_REQUIRED_LIBRARIES   ${_CMAKE_REQUIRED_LIBRARIES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
+      set(CMAKE_REQUIRED_FLAGS       ${_CMAKE_REQUIRED_FLAGS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
+      set(CMAKE_REQUIRED_QUIET       ${_CMAKE_REQUIRED_QUIET_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
+
+      math(EXPR _CMAKE_PUSH_CHECK_STATE_COUNTER "${_CMAKE_PUSH_CHECK_STATE_COUNTER}-1")
+   endif()
+
+endmacro()
diff --git a/share/cmake-3.6/Modules/CMakeRCCompiler.cmake.in b/share/cmake-3.10/Modules/CMakeRCCompiler.cmake.in
similarity index 100%
rename from share/cmake-3.6/Modules/CMakeRCCompiler.cmake.in
rename to share/cmake-3.10/Modules/CMakeRCCompiler.cmake.in
diff --git a/share/cmake-3.10/Modules/CMakeRCInformation.cmake b/share/cmake-3.10/Modules/CMakeRCInformation.cmake
new file mode 100644
index 0000000..a340288
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeRCInformation.cmake
@@ -0,0 +1,62 @@
+# 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 Windows Resource Compiler.
+# It also loads the available platform file for the system-compiler
+# if it exists.
+
+# make sure we don't use CMAKE_BASE_NAME from somewhere else
+set(CMAKE_BASE_NAME)
+if(CMAKE_RC_COMPILER MATCHES "windres[^/]*$")
+ set(CMAKE_BASE_NAME "windres")
+else()
+ get_filename_component(CMAKE_BASE_NAME ${CMAKE_RC_COMPILER} NAME_WE)
+endif()
+set(CMAKE_SYSTEM_AND_RC_COMPILER_INFO_FILE
+  ${CMAKE_ROOT}/Modules/Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_BASE_NAME}.cmake)
+include(Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_BASE_NAME} OPTIONAL)
+
+set(CMAKE_RC_FLAGS_INIT "$ENV{RCFLAGS} ${CMAKE_RC_FLAGS_INIT}")
+
+foreach(c "" _DEBUG _RELEASE _MINSIZEREL _RELWITHDEBINFO)
+  string(STRIP "${CMAKE_RC_FLAGS${c}_INIT}" CMAKE_RC_FLAGS${c}_INIT)
+endforeach()
+
+set (CMAKE_RC_FLAGS "${CMAKE_RC_FLAGS_INIT}" CACHE STRING
+     "Flags for Windows Resource Compiler.")
+
+if(NOT CMAKE_NOT_USING_CONFIG_FLAGS)
+  set (CMAKE_RC_FLAGS_DEBUG "${CMAKE_RC_FLAGS_DEBUG_INIT}" CACHE STRING
+    "Flags for Windows Resource Compiler during debug builds.")
+  set (CMAKE_RC_FLAGS_MINSIZEREL "${CMAKE_RC_FLAGS_MINSIZEREL_INIT}" CACHE STRING
+    "Flags for Windows Resource Compiler during release builds for minimum size.")
+  set (CMAKE_RC_FLAGS_RELEASE "${CMAKE_RC_FLAGS_RELEASE_INIT}" CACHE STRING
+    "Flags for Windows Resource Compiler during release builds.")
+  set (CMAKE_RC_FLAGS_RELWITHDEBINFO "${CMAKE_RC_FLAGS_RELWITHDEBINFO_INIT}" CACHE STRING
+    "Flags for Windows Resource Compiler during release builds with debug info.")
+endif()
+
+# These are the only types of flags that should be passed to the rc
+# command, if COMPILE_FLAGS is used on a target this will be used
+# to filter out any other flags
+set(CMAKE_RC_FLAG_REGEX "^[-/](D|I)")
+
+# now define the following rule variables
+# CMAKE_RC_COMPILE_OBJECT
+set(CMAKE_INCLUDE_FLAG_RC "-I")
+# compile a Resource file into an object file
+if(NOT CMAKE_RC_COMPILE_OBJECT)
+  set(CMAKE_RC_COMPILE_OBJECT
+    "<CMAKE_RC_COMPILER> <DEFINES> <INCLUDES> <FLAGS> /fo<OBJECT> <SOURCE>")
+endif()
+
+mark_as_advanced(
+CMAKE_RC_FLAGS
+CMAKE_RC_FLAGS_DEBUG
+CMAKE_RC_FLAGS_MINSIZEREL
+CMAKE_RC_FLAGS_RELEASE
+CMAKE_RC_FLAGS_RELWITHDEBINFO
+)
+# set this variable so we can avoid loading this more than once.
+set(CMAKE_RC_INFORMATION_LOADED 1)
diff --git a/share/cmake-3.6/Modules/CMakeSwiftCompiler.cmake.in b/share/cmake-3.10/Modules/CMakeSwiftCompiler.cmake.in
similarity index 100%
rename from share/cmake-3.6/Modules/CMakeSwiftCompiler.cmake.in
rename to share/cmake-3.10/Modules/CMakeSwiftCompiler.cmake.in
diff --git a/share/cmake-3.10/Modules/CMakeSwiftInformation.cmake b/share/cmake-3.10/Modules/CMakeSwiftInformation.cmake
new file mode 100644
index 0000000..d9b408d
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeSwiftInformation.cmake
@@ -0,0 +1,32 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+set(CMAKE_Swift_OUTPUT_EXTENSION .o)
+set(CMAKE_INCLUDE_FLAG_Swift "-I")
+
+# Load compiler-specific information.
+if(CMAKE_Swift_COMPILER_ID)
+  include(Compiler/${CMAKE_Swift_COMPILER_ID}-Swift OPTIONAL)
+endif()
+
+# load the system- and compiler specific files
+if(CMAKE_Swift_COMPILER_ID)
+  # load a hardware specific file, mostly useful for embedded compilers
+  if(CMAKE_SYSTEM_PROCESSOR)
+    include(Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_Swift_COMPILER_ID}-Swift-${CMAKE_SYSTEM_PROCESSOR} OPTIONAL)
+  endif()
+  include(Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_Swift_COMPILER_ID}-Swift 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
+if(NOT CMAKE_MODULE_EXISTS)
+  set(CMAKE_SHARED_MODULE_Swift_FLAGS ${CMAKE_SHARED_LIBRARY_Swift_FLAGS})
+  set(CMAKE_SHARED_MODULE_CREATE_Swift_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_Swift_FLAGS})
+endif()
+
+include(CMakeCommonLanguageInclude)
+
+set(CMAKE_Swift_INFORMATION_LOADED 1)
diff --git a/share/cmake-3.10/Modules/CMakeSystem.cmake.in b/share/cmake-3.10/Modules/CMakeSystem.cmake.in
new file mode 100644
index 0000000..ef8aaa0
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeSystem.cmake.in
@@ -0,0 +1,15 @@
+set(CMAKE_HOST_SYSTEM "@CMAKE_HOST_SYSTEM@")
+set(CMAKE_HOST_SYSTEM_NAME "@CMAKE_HOST_SYSTEM_NAME@")
+set(CMAKE_HOST_SYSTEM_VERSION "@CMAKE_HOST_SYSTEM_VERSION@")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "@CMAKE_HOST_SYSTEM_PROCESSOR@")
+
+@INCLUDE_CMAKE_TOOLCHAIN_FILE_IF_REQUIRED@
+
+set(CMAKE_SYSTEM "@CMAKE_SYSTEM@")
+set(CMAKE_SYSTEM_NAME "@CMAKE_SYSTEM_NAME@")
+set(CMAKE_SYSTEM_VERSION "@CMAKE_SYSTEM_VERSION@")
+set(CMAKE_SYSTEM_PROCESSOR "@CMAKE_SYSTEM_PROCESSOR@")
+@CMAKE_SYSTEM_CUSTOM_CODE@
+set(CMAKE_CROSSCOMPILING "@CMAKE_CROSSCOMPILING@")
+
+set(CMAKE_SYSTEM_LOADED 1)
diff --git a/share/cmake-3.10/Modules/CMakeSystemSpecificInformation.cmake b/share/cmake-3.10/Modules/CMakeSystemSpecificInformation.cmake
new file mode 100644
index 0000000..03f348d
--- /dev/null
+++ b/share/cmake-3.10/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(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 send your config file to "
+          "cmake@www.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 send that file to cmake@www.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.10/Modules/CMakeSystemSpecificInitialize.cmake b/share/cmake-3.10/Modules/CMakeSystemSpecificInitialize.cmake
new file mode 100644
index 0000000..6200e9c
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeSystemSpecificInitialize.cmake
@@ -0,0 +1,10 @@
+# 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 before the compiler has been determined.
+
+include(Platform/${CMAKE_SYSTEM_NAME}-Initialize OPTIONAL)
+
+set(CMAKE_SYSTEM_SPECIFIC_INITIALIZE_LOADED 1)
diff --git a/share/cmake-3.10/Modules/CMakeTestASM-ATTCompiler.cmake b/share/cmake-3.10/Modules/CMakeTestASM-ATTCompiler.cmake
new file mode 100644
index 0000000..df735c4
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeTestASM-ATTCompiler.cmake
@@ -0,0 +1,13 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This file is used by EnableLanguage in cmGlobalGenerator to
+# determine that the selected ASM-ATT "compiler" works.
+# For assembler this can only check whether the compiler has been found,
+# because otherwise there would have to be a separate assembler source file
+# for each assembler on every architecture.
+
+set(ASM_DIALECT "-ATT")
+include(CMakeTestASMCompiler)
+set(ASM_DIALECT)
diff --git a/share/cmake-3.10/Modules/CMakeTestASMCompiler.cmake b/share/cmake-3.10/Modules/CMakeTestASMCompiler.cmake
new file mode 100644
index 0000000..7f0b9a7
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeTestASMCompiler.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.
+
+
+# This file is used by EnableLanguage in cmGlobalGenerator to
+# determine that the selected ASM compiler works.
+# For assembler this can only check whether the compiler has been found,
+# because otherwise there would have to be a separate assembler source file
+# for each assembler on every architecture.
+
+
+set(_ASM_COMPILER_WORKS 0)
+
+if(CMAKE_ASM${ASM_DIALECT}_COMPILER)
+  set(_ASM_COMPILER_WORKS 1)
+endif()
+
+# when using generic "ASM" support, we must have detected the compiler ID, fail otherwise:
+if("ASM${ASM_DIALECT}" STREQUAL "ASM")
+  if(NOT CMAKE_ASM${ASM_DIALECT}_COMPILER_ID)
+    set(_ASM_COMPILER_WORKS 0)
+  endif()
+endif()
+
+set(CMAKE_ASM${ASM_DIALECT}_COMPILER_WORKS ${_ASM_COMPILER_WORKS} CACHE INTERNAL "")
diff --git a/share/cmake-3.10/Modules/CMakeTestASM_MASMCompiler.cmake b/share/cmake-3.10/Modules/CMakeTestASM_MASMCompiler.cmake
new file mode 100644
index 0000000..c1308ff
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeTestASM_MASMCompiler.cmake
@@ -0,0 +1,13 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This file is used by EnableLanguage in cmGlobalGenerator to
+# determine that the selected ASM_MASM "compiler" (should be masm or masm64)
+# works. For assembler this can only check whether the compiler has been found,
+# because otherwise there would have to be a separate assembler source file
+# for each assembler on every architecture.
+
+set(ASM_DIALECT "_MASM")
+include(CMakeTestASMCompiler)
+set(ASM_DIALECT)
diff --git a/share/cmake-3.10/Modules/CMakeTestASM_NASMCompiler.cmake b/share/cmake-3.10/Modules/CMakeTestASM_NASMCompiler.cmake
new file mode 100644
index 0000000..a9ee39d
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeTestASM_NASMCompiler.cmake
@@ -0,0 +1,13 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This file is used by EnableLanguage in cmGlobalGenerator to
+# determine that the selected ASM_NASM "compiler" works.
+# For assembler this can only check whether the compiler has been found,
+# because otherwise there would have to be a separate assembler source file
+# for each assembler on every architecture.
+
+set(ASM_DIALECT "_NASM")
+include(CMakeTestASMCompiler)
+set(ASM_DIALECT)
diff --git a/share/cmake-3.10/Modules/CMakeTestCCompiler.cmake b/share/cmake-3.10/Modules/CMakeTestCCompiler.cmake
new file mode 100644
index 0000000..e34ae75
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeTestCCompiler.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.
+
+
+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)
+
+# Remove any cached result from an older CMake version.
+# We now store this in CMakeCCompiler.cmake.
+unset(CMAKE_C_COMPILER_WORKS CACHE)
+
+# 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" "")
+  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)
+  set(C_TEST_WAS_RUN 1)
+endif()
+
+if(NOT CMAKE_C_COMPILER_WORKS)
+  PrintTestCompilerStatus("C" " -- 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.")
+else()
+  if(C_TEST_WAS_RUN)
+    PrintTestCompilerStatus("C" " -- 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 ABI and configure it into CMakeCCompiler.cmake
+  include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake)
+  CMAKE_DETERMINE_COMPILER_ABI(C ${CMAKE_ROOT}/Modules/CMakeCCompilerABI.c)
+  # 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()
+endif()
+
+unset(__CMAKE_C_COMPILER_OUTPUT)
diff --git a/share/cmake-3.10/Modules/CMakeTestCSharpCompiler.cmake b/share/cmake-3.10/Modules/CMakeTestCSharpCompiler.cmake
new file mode 100644
index 0000000..f3b95fd
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeTestCSharpCompiler.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(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 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_CSharp_COMPILER_WORKS)
+  PrintTestCompilerStatus("C#" "${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)
+  PrintTestCompilerStatus("C#" "${CMAKE_CSharp_COMPILER} -- 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)
+    PrintTestCompilerStatus("C#" "${CMAKE_CSharp_COMPILER} -- 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.10/Modules/CMakeTestCUDACompiler.cmake b/share/cmake-3.10/Modules/CMakeTestCUDACompiler.cmake
new file mode 100644
index 0000000..df5ec72
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeTestCUDACompiler.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.
+
+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)
+
+# This file is used by EnableLanguage in cmGlobalGenerator to
+# determine that that 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)
+  set(CUDA_TEST_WAS_RUN 1)
+endif()
+
+if(NOT CMAKE_CUDA_COMPILER_WORKS)
+  PrintTestCompilerStatus("CUDA" " -- 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.")
+else()
+  if(CUDA_TEST_WAS_RUN)
+    PrintTestCompilerStatus("CUDA" " -- 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 ABI and configure it into CMakeCUDACompiler.cmake
+  include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake)
+  CMAKE_DETERMINE_COMPILER_ABI(CUDA ${CMAKE_ROOT}/Modules/CMakeCUDACompilerABI.cu)
+
+  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()
+
+  # 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)
+endif()
+
+
+unset(__CMAKE_CUDA_COMPILER_OUTPUT)
diff --git a/share/cmake-3.10/Modules/CMakeTestCXXCompiler.cmake b/share/cmake-3.10/Modules/CMakeTestCXXCompiler.cmake
new file mode 100644
index 0000000..7b80dc0
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeTestCXXCompiler.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.
+
+
+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)
+
+# Remove any cached result from an older CMake version.
+# We now store this in CMakeCXXCompiler.cmake.
+unset(CMAKE_CXX_COMPILER_WORKS CACHE)
+
+# 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_CXX_COMPILER_WORKS)
+  PrintTestCompilerStatus("CXX" "")
+  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)
+  set(CXX_TEST_WAS_RUN 1)
+endif()
+
+if(NOT CMAKE_CXX_COMPILER_WORKS)
+  PrintTestCompilerStatus("CXX" " -- 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.")
+else()
+  if(CXX_TEST_WAS_RUN)
+    PrintTestCompilerStatus("CXX" " -- 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 ABI and configure it into CMakeCXXCompiler.cmake
+  include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake)
+  CMAKE_DETERMINE_COMPILER_ABI(CXX ${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp)
+  # 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()
+endif()
+
+unset(__CMAKE_CXX_COMPILER_OUTPUT)
diff --git a/share/cmake-3.10/Modules/CMakeTestCompilerCommon.cmake b/share/cmake-3.10/Modules/CMakeTestCompilerCommon.cmake
new file mode 100644
index 0000000..f76076f
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeTestCompilerCommon.cmake
@@ -0,0 +1,7 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+function(PrintTestCompilerStatus LANG MSG)
+  message(STATUS "Check for working ${LANG} compiler: ${CMAKE_${LANG}_COMPILER}${MSG}")
+endfunction()
diff --git a/share/cmake-3.10/Modules/CMakeTestFortranCompiler.cmake b/share/cmake-3.10/Modules/CMakeTestFortranCompiler.cmake
new file mode 100644
index 0000000..3c150a8
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeTestFortranCompiler.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_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)
+
+# This file is used by EnableLanguage in cmGlobalGenerator to
+# determine that that 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)
+  set(FORTRAN_TEST_WAS_RUN 1)
+endif()
+
+if(NOT CMAKE_Fortran_COMPILER_WORKS)
+  PrintTestCompilerStatus("Fortran" "  -- 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.")
+else()
+  if(FORTRAN_TEST_WAS_RUN)
+    PrintTestCompilerStatus("Fortran" "  -- 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()
+
+  # 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)
+
+  # Test for Fortran 90 support by using an f90-specific construct.
+  if(NOT DEFINED CMAKE_Fortran_COMPILER_SUPPORTS_F90)
+    message(STATUS "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(STATUS "Checking whether ${CMAKE_Fortran_COMPILER} supports Fortran 90 -- 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(STATUS "Checking whether ${CMAKE_Fortran_COMPILER} supports Fortran 90 -- 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()
+endif()
diff --git a/share/cmake-3.6/Modules/CMakeTestGNU.c b/share/cmake-3.10/Modules/CMakeTestGNU.c
similarity index 100%
rename from share/cmake-3.6/Modules/CMakeTestGNU.c
rename to share/cmake-3.10/Modules/CMakeTestGNU.c
diff --git a/share/cmake-3.10/Modules/CMakeTestJavaCompiler.cmake b/share/cmake-3.10/Modules/CMakeTestJavaCompiler.cmake
new file mode 100644
index 0000000..23fdbdc
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeTestJavaCompiler.cmake
@@ -0,0 +1,10 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This file is used by EnableLanguage in cmGlobalGenerator to
+# determine that that 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.
+set(CMAKE_Java_COMPILER_WORKS 1 CACHE INTERNAL "")
diff --git a/share/cmake-3.10/Modules/CMakeTestRCCompiler.cmake b/share/cmake-3.10/Modules/CMakeTestRCCompiler.cmake
new file mode 100644
index 0000000..c510d3a
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeTestRCCompiler.cmake
@@ -0,0 +1,13 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# This file is used by EnableLanguage in cmGlobalGenerator to
+# determine that that selected RC 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.
+
+# For now there is no way to do a try compile on just a .rc file
+# so just do nothing in here.
+set(CMAKE_RC_COMPILER_WORKS 1 CACHE INTERNAL "")
diff --git a/share/cmake-3.10/Modules/CMakeTestSwiftCompiler.cmake b/share/cmake-3.10/Modules/CMakeTestSwiftCompiler.cmake
new file mode 100644
index 0000000..bcd5c33
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeTestSwiftCompiler.cmake
@@ -0,0 +1,56 @@
+# 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 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_Swift_COMPILER_WORKS)
+  PrintTestCompilerStatus("Swift" "")
+  file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/main.swift
+    "import Foundation\n"
+    "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)
+  PrintTestCompilerStatus("Swift" " -- 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)
+    PrintTestCompilerStatus("Swift" " -- 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()
+endif()
+
+unset(__CMAKE_Swift_COMPILER_OUTPUT)
diff --git a/share/cmake-3.10/Modules/CMakeUnixFindMake.cmake b/share/cmake-3.10/Modules/CMakeUnixFindMake.cmake
new file mode 100644
index 0000000..1165656
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeUnixFindMake.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.
+
+
+find_program(CMAKE_MAKE_PROGRAM NAMES gmake make smake)
+mark_as_advanced(CMAKE_MAKE_PROGRAM)
+
+# Look for a make tool provided by Xcode
+if(NOT CMAKE_MAKE_PROGRAM AND CMAKE_HOST_APPLE)
+  execute_process(COMMAND xcrun --find make
+    OUTPUT_VARIABLE _xcrun_out OUTPUT_STRIP_TRAILING_WHITESPACE
+    ERROR_VARIABLE _xcrun_err)
+  if(_xcrun_out)
+    set_property(CACHE CMAKE_MAKE_PROGRAM PROPERTY VALUE "${_xcrun_out}")
+  endif()
+endif()
diff --git a/share/cmake-3.10/Modules/CMakeVerifyManifest.cmake b/share/cmake-3.10/Modules/CMakeVerifyManifest.cmake
new file mode 100644
index 0000000..c477ab1
--- /dev/null
+++ b/share/cmake-3.10/Modules/CMakeVerifyManifest.cmake
@@ -0,0 +1,109 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#.rst:
+# CMakeVerifyManifest
+# -------------------
+#
+#
+#
+# CMakeVerifyManifest.cmake
+#
+# This script is used to verify that embedded manifests and side by side
+# manifests for a project match.  To run this script, cd to a directory
+# and run the script with cmake -P.  On the command line you can pass in
+# versions that are OK even if not found in the .manifest files.  For
+# example, cmake -Dallow_versions=8.0.50608.0
+# -PCmakeVerifyManifest.cmake could be used to allow an embedded manifest
+# of 8.0.50608.0 to be used in a project even if that version was not
+# found in the .manifest file.
+
+# This script first recursively globs *.manifest files from
+# the current directory.  Then globs *.exe and *.dll.  Each
+# .exe and .dll is scanned for embedded manifests and the versions
+# of CRT are compared to those found in the .manifest files
+# from the first glob.
+
+# crt_version:
+# function to extract the CRT version from a file
+# this can be passed a .exe, .dll, or a .manifest file
+# it will put the list of versions found into the variable
+# specified by list_var
+function(crt_version file list_var)
+  file(STRINGS "${file}" strings REGEX "Microsoft.VC...CRT" NEWLINE_CONSUME)
+  foreach(s ${strings})
+    set(has_match 1)
+    string(REGEX
+      REPLACE ".*<assembly.*\"Microsoft.VC...CRT\".*version=\"([^\"]*)\".*</assembly>.*$" "\\1"
+      version "${s}")
+    if(NOT "${version}" STREQUAL "")
+      list(APPEND version_list ${version})
+    else()
+      message(FATAL_ERROR "Parse error could not find version in [${s}]")
+    endif()
+  endforeach()
+  if(NOT DEFINED has_match)
+    message("Information: no embedded manifest in: ${file}")
+    return()
+  endif()
+  list(APPEND version_list ${${list_var}})
+  list(REMOVE_DUPLICATES version_list)
+  if(version_list)
+    set(${list_var} ${version_list} PARENT_SCOPE)
+  endif()
+endfunction()
+set(fatal_error FALSE)
+
+# check_version:
+#
+# test a file against the shipped manifest versions
+# for a directory
+function(check_version file manifest_versions)
+  set(manifest_versions ${manifest_versions} ${allow_versions})
+  # collect versions for a given file
+  crt_version(${file} file_versions)
+  # see if the versions
+  foreach(ver ${file_versions})
+    list(FIND manifest_versions "${ver}" found_version)
+    if("${found_version}" EQUAL -1)
+      message("ERROR: ${file} uses ${ver} not found in shipped manifests:[${manifest_versions}].")
+      set(fatal_error TRUE PARENT_SCOPE)
+    endif()
+  endforeach()
+  list(LENGTH file_versions len)
+  if(${len} GREATER 1)
+    message("WARNING: found more than one version of MICROSOFT.VC80.CRT referenced in ${file}: [${file_versions}]")
+  endif()
+endfunction()
+
+# collect up the versions of CRT that are shipped
+# in .manifest files
+set(manifest_version_list )
+file(GLOB_RECURSE manifest_files "*.manifest")
+foreach(f ${manifest_files})
+  crt_version("${f}" manifest_version_list)
+endforeach()
+list(LENGTH manifest_version_list LEN)
+if(LEN EQUAL 0)
+  message(FATAL_ERROR "No .manifest files found, no version check can be done.")
+endif()
+message("Versions found in ${manifest_files}: ${manifest_version_list}")
+if(DEFINED allow_versions)
+  message("Extra versions allowed: ${allow_versions}")
+endif()
+
+# now find all .exe and .dll files
+# and call check_version on each of them
+file(GLOB_RECURSE exe_files "*.exe")
+file(GLOB_RECURSE dll_files "*.dll")
+set(exe_files ${exe_files} ${dll_files})
+foreach(f ${exe_files})
+  check_version(${f} "${manifest_version_list}")
+endforeach()
+
+# report a fatal error if there were any so that cmake will return
+# a non zero value
+if(fatal_error)
+  message(FATAL_ERROR "This distribution embeds dll "
+    " versions that it does not ship, and may not work on other machines.")
+endif()
diff --git a/share/cmake-3.6/Modules/CPack.DS_Store.in b/share/cmake-3.10/Modules/CPack.DS_Store.in
similarity index 100%
rename from share/cmake-3.6/Modules/CPack.DS_Store.in
rename to share/cmake-3.10/Modules/CPack.DS_Store.in
Binary files differ
diff --git a/share/cmake-3.6/Modules/CPack.Description.plist.in b/share/cmake-3.10/Modules/CPack.Description.plist.in
similarity index 100%
rename from share/cmake-3.6/Modules/CPack.Description.plist.in
rename to share/cmake-3.10/Modules/CPack.Description.plist.in
diff --git a/share/cmake-3.6/Modules/CPack.Info.plist.in b/share/cmake-3.10/Modules/CPack.Info.plist.in
similarity index 100%
rename from share/cmake-3.6/Modules/CPack.Info.plist.in
rename to share/cmake-3.10/Modules/CPack.Info.plist.in
diff --git a/share/cmake-3.6/Modules/CPack.OSXScriptLauncher.in b/share/cmake-3.10/Modules/CPack.OSXScriptLauncher.in
similarity index 100%
rename from share/cmake-3.6/Modules/CPack.OSXScriptLauncher.in
rename to share/cmake-3.10/Modules/CPack.OSXScriptLauncher.in
Binary files differ
diff --git a/share/cmake-3.6/Modules/CPack.OSXScriptLauncher.rsrc.in b/share/cmake-3.10/Modules/CPack.OSXScriptLauncher.rsrc.in
similarity index 100%
rename from share/cmake-3.6/Modules/CPack.OSXScriptLauncher.rsrc.in
rename to share/cmake-3.10/Modules/CPack.OSXScriptLauncher.rsrc.in
Binary files differ
diff --git a/share/cmake-3.6/Modules/CPack.OSXX11.Info.plist.in b/share/cmake-3.10/Modules/CPack.OSXX11.Info.plist.in
similarity index 100%
rename from share/cmake-3.6/Modules/CPack.OSXX11.Info.plist.in
rename to share/cmake-3.10/Modules/CPack.OSXX11.Info.plist.in
diff --git a/share/cmake-3.6/Modules/CPack.OSXX11.main.scpt.in b/share/cmake-3.10/Modules/CPack.OSXX11.main.scpt.in
similarity index 100%
rename from share/cmake-3.6/Modules/CPack.OSXX11.main.scpt.in
rename to share/cmake-3.10/Modules/CPack.OSXX11.main.scpt.in
Binary files differ
diff --git a/share/cmake-3.6/Modules/CPack.RuntimeScript.in b/share/cmake-3.10/Modules/CPack.RuntimeScript.in
similarity index 100%
rename from share/cmake-3.6/Modules/CPack.RuntimeScript.in
rename to share/cmake-3.10/Modules/CPack.RuntimeScript.in
diff --git a/share/cmake-3.10/Modules/CPack.STGZ_Header.sh.in b/share/cmake-3.10/Modules/CPack.STGZ_Header.sh.in
new file mode 100755
index 0000000..70f63d2
--- /dev/null
+++ b/share/cmake-3.10/Modules/CPack.STGZ_Header.sh.in
@@ -0,0 +1,146 @@
+#!/bin/sh
+
+# Display usage
+cpack_usage()
+{
+  cat <<EOF
+Usage: $0 [options]
+Options: [defaults in brackets after descriptions]
+  --help            print this message
+  --version         print cmake installer version
+  --prefix=dir      directory in which to install
+  --include-subdir  include the @CPACK_PACKAGE_FILE_NAME@ subdirectory
+  --exclude-subdir  exclude the @CPACK_PACKAGE_FILE_NAME@ subdirectory
+  --skip-license    accept license
+EOF
+  exit 1
+}
+
+cpack_echo_exit()
+{
+  echo $1
+  exit 1
+}
+
+# Display version
+cpack_version()
+{
+  echo "@CPACK_PACKAGE_NAME@ Installer Version: @CPACK_PACKAGE_VERSION@, Copyright (c) @CPACK_PACKAGE_VENDOR@"
+}
+
+# Helper function to fix windows paths.
+cpack_fix_slashes ()
+{
+  echo "$1" | sed 's/\\/\//g'
+}
+
+interactive=TRUE
+cpack_skip_license=FALSE
+cpack_include_subdir=""
+for a in "$@CPACK_AT_SIGN@"; do
+  if echo $a | grep "^--prefix=" > /dev/null 2> /dev/null; then
+    cpack_prefix_dir=`echo $a | sed "s/^--prefix=//"`
+    cpack_prefix_dir=`cpack_fix_slashes "${cpack_prefix_dir}"`
+  fi
+  if echo $a | grep "^--help" > /dev/null 2> /dev/null; then
+    cpack_usage 
+  fi
+  if echo $a | grep "^--version" > /dev/null 2> /dev/null; then
+    cpack_version 
+    exit 2
+  fi
+  if echo $a | grep "^--include-subdir" > /dev/null 2> /dev/null; then
+    cpack_include_subdir=TRUE
+  fi
+  if echo $a | grep "^--exclude-subdir" > /dev/null 2> /dev/null; then
+    cpack_include_subdir=FALSE
+  fi
+  if echo $a | grep "^--skip-license" > /dev/null 2> /dev/null; then
+    cpack_skip_license=TRUE
+  fi
+done
+
+if [ "x${cpack_include_subdir}x" != "xx" -o "x${cpack_skip_license}x" = "xTRUEx" ]
+then
+  interactive=FALSE
+fi
+
+cpack_version
+echo "This is a self-extracting archive."
+toplevel="`pwd`"
+if [ "x${cpack_prefix_dir}x" != "xx" ]
+then
+  toplevel="${cpack_prefix_dir}"
+fi
+
+echo "The archive will be extracted to: ${toplevel}"
+
+if [ "x${interactive}x" = "xTRUEx" ]
+then
+  echo ""
+  echo "If you want to stop extracting, please press <ctrl-C>."
+
+  if [ "x${cpack_skip_license}x" != "xTRUEx" ]
+  then
+    more << '____cpack__here_doc____'
+@CPACK_RESOURCE_FILE_LICENSE_CONTENT@
+____cpack__here_doc____
+    echo
+    echo "Do you accept the license? [yN]: "
+    read line leftover
+    case ${line} in
+      y* | Y*)
+        cpack_license_accepted=TRUE;;
+      *)
+        echo "License not accepted. Exiting ..."
+        exit 1;;
+    esac
+  fi
+
+  if [ "x${cpack_include_subdir}x" = "xx" ]
+  then
+    echo "By default the @CPACK_PACKAGE_NAME@ will be installed in:"
+    echo "  \"${toplevel}/@CPACK_PACKAGE_FILE_NAME@\""
+    echo "Do you want to include the subdirectory @CPACK_PACKAGE_FILE_NAME@?"
+    echo "Saying no will install in: \"${toplevel}\" [Yn]: "
+    read line leftover
+    cpack_include_subdir=TRUE
+    case ${line} in
+      n* | N*)
+        cpack_include_subdir=FALSE
+    esac
+  fi
+fi
+
+if [ "x${cpack_include_subdir}x" = "xTRUEx" ]
+then
+  toplevel="${toplevel}/@CPACK_PACKAGE_FILE_NAME@"
+  mkdir -p "${toplevel}"
+fi
+echo
+echo "Using target directory: ${toplevel}"
+echo "Extracting, please wait..."
+echo ""
+
+# take the archive portion of this file and pipe it to tar
+# the NUMERIC parameter in this command should be one more
+# than the number of lines in this header file
+# there are tails which don't understand the "-n" argument, e.g. on SunOS
+# OTOH there are tails which complain when not using the "-n" argument (e.g. GNU)
+# so at first try to tail some file to see if tail fails if used with "-n"
+# if so, don't use "-n"
+use_new_tail_syntax="-n"
+tail $use_new_tail_syntax +1 "$0" > /dev/null 2> /dev/null || use_new_tail_syntax=""
+
+extractor="pax -r"
+command -v pax > /dev/null 2> /dev/null || extractor="tar xf -"
+
+tail $use_new_tail_syntax +###CPACK_HEADER_LENGTH### "$0" | gunzip | (cd "${toplevel}" && ${extractor}) || cpack_echo_exit "Problem unpacking the @CPACK_PACKAGE_FILE_NAME@"
+
+echo "Unpacking finished successfully"
+
+exit 0
+#-----------------------------------------------------------
+#      Start of TAR.GZ file
+#-----------------------------------------------------------;
+
diff --git a/share/cmake-3.6/Modules/CPack.VolumeIcon.icns.in b/share/cmake-3.10/Modules/CPack.VolumeIcon.icns.in
similarity index 100%
rename from share/cmake-3.6/Modules/CPack.VolumeIcon.icns.in
rename to share/cmake-3.10/Modules/CPack.VolumeIcon.icns.in
Binary files differ
diff --git a/share/cmake-3.6/Modules/CPack.background.png.in b/share/cmake-3.10/Modules/CPack.background.png.in
similarity index 100%
rename from share/cmake-3.6/Modules/CPack.background.png.in
rename to share/cmake-3.10/Modules/CPack.background.png.in
Binary files differ
diff --git a/share/cmake-3.10/Modules/CPack.cmake b/share/cmake-3.10/Modules/CPack.cmake
new file mode 100644
index 0000000..3915943
--- /dev/null
+++ b/share/cmake-3.10/Modules/CPack.cmake
@@ -0,0 +1,677 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#.rst:
+# CPack
+# -----
+#
+# Build binary and source package installers.
+#
+# Variables common to all CPack generators
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+#
+# The
+# CPack module generates binary and source installers in a variety of
+# formats using the cpack program.  Inclusion of the CPack module adds
+# two new targets to the resulting makefiles, package and
+# package_source, which build the binary and source installers,
+# respectively.  The generated binary installers contain everything
+# installed via CMake's INSTALL command (and the deprecated
+# INSTALL_FILES, INSTALL_PROGRAMS, and INSTALL_TARGETS commands).
+#
+# For certain kinds of binary installers (including the graphical
+# installers on Mac OS X and Windows), CPack generates installers that
+# allow users to select individual application components to install.
+# See CPackComponent module for that.
+#
+# The CPACK_GENERATOR variable has different meanings in different
+# contexts.  In your CMakeLists.txt file, CPACK_GENERATOR is a *list of
+# generators*: when run with no other arguments, CPack will iterate over
+# that list and produce one package for each generator.  In a
+# CPACK_PROJECT_CONFIG_FILE, though, 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
+# CPACK_PROJECT_CONFIG_FILE.
+#
+# The CMake source tree itself contains a CPACK_PROJECT_CONFIG_FILE.
+# See the top level file CMakeCPackOptions.cmake.in for an example.
+#
+# If set, the CPACK_PROJECT_CONFIG_FILE is included automatically on a
+# per-generator basis.  It only need contain overrides.
+#
+# Here's how it works:
+#
+# * cpack runs
+# * it includes CPackConfig.cmake
+# * it iterates over the generators listed in that file's
+#   CPACK_GENERATOR list variable (unless told to use just a
+#   specific one via -G on the command line...)
+# * foreach generator, it then
+#
+#   - sets CPACK_GENERATOR to the one currently being iterated
+#   - includes the CPACK_PROJECT_CONFIG_FILE
+#   - produces the package for that generator
+#
+# This is the key: For each generator listed in CPACK_GENERATOR in
+# CPackConfig.cmake, cpack will *reset* CPACK_GENERATOR internally to
+# *the one currently being used* and then include the
+# CPACK_PROJECT_CONFIG_FILE.
+#
+# 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, defaults to
+#  the project name.
+#
+# .. variable:: CPACK_PACKAGE_VENDOR
+#
+#  The name of the package vendor. (e.g., "Kitware").
+#
+# .. 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 CPack config file or from the cpack command line option
+#  "-B". If set the command line option override the value found in the
+#  config file.
+#
+# .. variable:: CPACK_PACKAGE_VERSION_MAJOR
+#
+#  Package major Version
+#
+# .. variable:: CPACK_PACKAGE_VERSION_MINOR
+#
+#  Package minor Version
+#
+# .. variable:: CPACK_PACKAGE_VERSION_PATCH
+#
+#  Package patch Version
+#
+# .. variable:: CPACK_PACKAGE_DESCRIPTION_FILE
+#
+#  A text file used to describe the project. Used, for example, the
+#  introduction screen of a CPack-generated Windows installer to describe
+#  the project.
+#
+# .. variable:: CPACK_PACKAGE_DESCRIPTION_SUMMARY
+#
+#  Short description of the project (only a few words). Default value is::
+#
+#    ${PROJECT_DESCRIPTION}
+#
+#  if DESCRIPTION has given to the project() call or
+#  CMake generated string with PROJECT_NAME otherwise.
+#
+# .. 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 element 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 additional file with checksum
+#  of the package. 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 included at cpack
+#  time, once per generator after CPack has set 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 installed file 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 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 uses 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 1/TRUE.
+#
+# .. variable:: CPACK_GENERATOR
+#
+#  List of CPack generators to use. If not specified, CPack will create a
+#  set of options CPACK_BINARY_<GENNAME> (e.g., CPACK_BINARY_NSIS) allowing
+#  the user to enable/disable individual generators. This variable may be
+#  used on the command line as well as in::
+#
+#   cpack -D CPACK_GENERATOR="ZIP;TGZ" /path/to/build/tree
+#
+# .. 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.
+#
+#  * Mandatory : NO
+#  * Default   : FALSE
+#
+# 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 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.*
+#
+# The following variables are for advanced uses of CPack:
+#
+# .. variable:: CPACK_CMAKE_GENERATOR
+#
+#  What CMake generator should be used if the project is CMake
+#  project. Defaults to the value of 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 ${CMAKE_SYSTEM_NAME}.
+#
+# .. variable:: CPACK_PACKAGE_VERSION
+#
+#  Package full version, used internally. By default, this is built from
+#  CPACK_PACKAGE_VERSION_MAJOR, CPACK_PACKAGE_VERSION_MINOR, and
+#  CPACK_PACKAGE_VERSION_PATCH.
+#
+# .. variable:: CPACK_TOPLEVEL_TAG
+#
+#  Directory for the installed files.
+#
+# .. variable:: CPACK_INSTALL_COMMANDS
+#
+#  Extra commands to install components.
+#
+# .. 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
+#  installer 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`.
+
+# 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}")
+_cpack_set_default(CPACK_PACKAGE_VERSION_MAJOR "0")
+_cpack_set_default(CPACK_PACKAGE_VERSION_MINOR "1")
+_cpack_set_default(CPACK_PACKAGE_VERSION_PATCH "1")
+_cpack_set_default(CPACK_PACKAGE_VERSION
+  "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
+_cpack_set_default(CPACK_PACKAGE_VENDOR "Humanity")
+if(CMAKE_PROJECT_DESCRIPTION)
+  _cpack_set_default(CPACK_PACKAGE_DESCRIPTION_SUMMARY
+    "${CMAKE_PROJECT_DESCRIPTION}")
+else()
+  _cpack_set_default(CPACK_PACKAGE_DESCRIPTION_SUMMARY
+    "${CMAKE_PROJECT_NAME} built using CMake")
+endif()
+
+_cpack_set_default(CPACK_PACKAGE_DESCRIPTION_FILE
+  "${CMAKE_ROOT}/Templates/CPack.GenericDescription.txt")
+_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}")
+
+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()
+
+#.rst:
+# .. variable:: CPACK_BINARY_<GENNAME>
+#
+#  CPack generated options for binary generators. The CPack.cmake module
+#  generates (when CPACK_GENERATOR is not set) a set of CMake options (see
+#  CMake option command) which may then be used to select the CPack
+#  generator(s) to be used when launching the package target.
+#
+#  Provide options to choose generators we might check here if the required
+#  tools for the generates 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"      OFF)
+        option(CPACK_BINARY_PACKAGEMAKER "Enable to build PackageMaker packages" OFF)
+        option(CPACK_BINARY_PRODUCTBUILD "Enable to build productbuild packages" OFF)
+      else()
+        option(CPACK_BINARY_TZ  "Enable to build TZ packages"     ON)
+      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)
+    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_WIX  "Enable to build WiX packages" OFF)
+    option(CPACK_BINARY_ZIP  "Enable to build ZIP packages" OFF)
+  endif()
+  option(CPACK_BINARY_IFW "Enable to build IFW packages" OFF)
+
+  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_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)
+    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)
+    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)
+  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()
+
+# mark the above options as advanced
+mark_as_advanced(
+  CPACK_BINARY_7Z
+  CPACK_BINARY_BUNDLE
+  CPACK_BINARY_CYGWIN
+  CPACK_BINARY_DEB
+  CPACK_BINARY_DRAGNDROP
+  CPACK_BINARY_FREEBSD
+  CPACK_BINARY_IFW
+  CPACK_BINARY_NSIS
+  CPACK_BINARY_OSXX11
+  CPACK_BINARY_PACKAGEMAKER
+  CPACK_BINARY_PRODUCTBUILD
+  CPACK_BINARY_RPM
+  CPACK_BINARY_STGZ
+  CPACK_BINARY_TBZ2
+  CPACK_BINARY_TGZ
+  CPACK_BINARY_TXZ
+  CPACK_BINARY_TZ
+  CPACK_BINARY_WIX
+  CPACK_BINARY_ZIP
+  CPACK_SOURCE_7Z
+  CPACK_SOURCE_CYGWIN
+  CPACK_SOURCE_RPM
+  CPACK_SOURCE_TBZ2
+  CPACK_SOURCE_TGZ
+  CPACK_SOURCE_TXZ
+  CPACK_SOURCE_TZ
+  CPACK_SOURCE_ZIP
+  )
+
+# 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}")
+
+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.6/Modules/CPack.distribution.dist.in b/share/cmake-3.10/Modules/CPack.distribution.dist.in
similarity index 100%
rename from share/cmake-3.6/Modules/CPack.distribution.dist.in
rename to share/cmake-3.10/Modules/CPack.distribution.dist.in
diff --git a/share/cmake-3.10/Modules/CPackArchive.cmake b/share/cmake-3.10/Modules/CPackArchive.cmake
new file mode 100644
index 0000000..741fb1f
--- /dev/null
+++ b/share/cmake-3.10/Modules/CPackArchive.cmake
@@ -0,0 +1,39 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#.rst:
+# CPackArchive
+# ------------
+#
+# Archive CPack generator that supports packaging of sources and binaries in
+# different formats:
+#
+#   - 7Z - 7zip - (.7z)
+#   - TBZ2 (.tar.bz2)
+#   - TGZ (.tar.gz)
+#   - TXZ (.tar.xz)
+#   - TZ (.tar.Z)
+#   - ZIP (.zip)
+#
+# Variables specific to CPack Archive generator
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+#
+# .. variable:: CPACK_ARCHIVE_FILE_NAME
+#               CPACK_ARCHIVE_<component>_FILE_NAME
+#
+#  Package file name without extension which is added automatically depending
+#  on the archive format.
+#
+#  * Mandatory : YES
+#  * Default   : ``<CPACK_PACKAGE_FILE_NAME>[-<component>].<extension>`` with
+#                spaces replaced by '-'
+#
+# .. variable:: CPACK_ARCHIVE_COMPONENT_INSTALL
+#
+#  Enable component packaging for CPackArchive
+#
+#  * Mandatory : NO
+#  * Default   : OFF
+#
+#  If enabled (ON) multiple packages are generated. By default a single package
+#  containing files of all components is generated.
diff --git a/share/cmake-3.10/Modules/CPackBundle.cmake b/share/cmake-3.10/Modules/CPackBundle.cmake
new file mode 100644
index 0000000..8f37ef8
--- /dev/null
+++ b/share/cmake-3.10/Modules/CPackBundle.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.
+
+#.rst:
+# CPackBundle
+# -----------
+#
+# CPack Bundle generator (Mac OS X) specific options
+#
+# Variables specific to CPack Bundle generator
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+#
+# Installers built on Mac OS X 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 OSX finder as the
+#  bundle name. Required.
+#
+# .. variable:: CPACK_BUNDLE_PLIST
+#
+#  Path to an OSX 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 OSX icon file that will be used as the icon for the generated
+#  bundle. This is the icon that appears in the OSX finder for the bundle, and
+#  in the OSX 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
+#  OSX 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 plist file that contains your apple entitlements for sandboxing
+#  your application. This file is required for submission to the Mac 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.)
+
+#Bundle Generator specific code should be put here
diff --git a/share/cmake-3.10/Modules/CPackComponent.cmake b/share/cmake-3.10/Modules/CPackComponent.cmake
new file mode 100644
index 0000000..2374fbd
--- /dev/null
+++ b/share/cmake-3.10/Modules/CPackComponent.cmake
@@ -0,0 +1,540 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#.rst:
+# CPackComponent
+# --------------
+#
+# Build binary and source package installers
+#
+# Variables concerning CPack Components
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+#
+# The CPackComponent module is the module which handles the component
+# part of CPack.  See CPack module for general information about CPack.
+#
+# For certain kinds of binary installers (including the graphical
+# installers on Mac OS X and Windows), CPack generates installers that
+# allow users to select individual application components to install.
+# The contents of each of the components are identified by the COMPONENT
+# argument of CMake's INSTALL command.  These components can be
+# annotated with user-friendly names and descriptions, inter-component
+# dependencies, etc., and grouped in various ways to customize the
+# resulting installer.  See the cpack_add_* commands, described below,
+# for more information about component-specific installations.
+#
+# Component-specific installation allows users to select specific sets
+# of components to install during the install process.  Installation
+# components are identified by the COMPONENT argument of CMake's INSTALL
+# commands, and should be further described by the following CPack
+# commands:
+#
+# .. variable:: CPACK_COMPONENTS_ALL
+#
+#  The list of component to install.
+#
+#  The default value of this variable is computed by CPack and contains all
+#  components defined by the project.  The user may set it to only include the
+#  specified components.
+#
+#  Instead of specifying all the desired components, it is possible to obtain a
+#  list of all defined components and then remove the unwanted ones from the
+#  list. The :command:`get_cmake_property` command can be used to obtain the
+#  ``COMPONENTS`` property, then the :command:`list(REMOVE_ITEM)` command can be
+#  used to remove the unwanted ones. For example, to use all defined components
+#  except ``foo`` and ``bar``::
+#
+#    get_cmake_property(CPACK_COMPONENTS_ALL COMPONENTS)
+#    list(REMOVE_ITEM CPACK_COMPONENTS_ALL "foo" "bar")
+#
+# .. variable:: CPACK_<GENNAME>_COMPONENT_INSTALL
+#
+#  Enable/Disable component install for CPack generator <GENNAME>.
+#
+#  Each CPack Generator (RPM, DEB, ARCHIVE, NSIS, DMG, etc...) has a legacy
+#  default behavior.  e.g.  RPM builds monolithic whereas NSIS builds
+#  component.  One can change the default behavior by setting this variable to
+#  0/1 or OFF/ON.
+#
+# .. variable:: CPACK_COMPONENTS_GROUPING
+#
+#  Specify how components are grouped for multi-package component-aware CPack
+#  generators.
+#
+#  Some generators like RPM or ARCHIVE family (TGZ, ZIP, ...) generates
+#  several packages files when asked for component packaging.  They group
+#  the component differently depending on the value of this variable:
+#
+#  * ONE_PER_GROUP (default): creates one package file per component group
+#  * ALL_COMPONENTS_IN_ONE : creates a single package with all (requested) component
+#  * IGNORE : creates one package per component, i.e. IGNORE component group
+#
+#  One can specify different grouping for different CPack generator by
+#  using a CPACK_PROJECT_CONFIG_FILE.
+#
+# .. variable:: CPACK_COMPONENT_<compName>_DISPLAY_NAME
+#
+#  The name to be displayed for a component.
+#
+# .. variable:: CPACK_COMPONENT_<compName>_DESCRIPTION
+#
+#  The description of a component.
+#
+# .. variable:: CPACK_COMPONENT_<compName>_GROUP
+#
+#  The group of a component.
+#
+# .. variable:: CPACK_COMPONENT_<compName>_DEPENDS
+#
+#  The dependencies (list of components) on which this component depends.
+#
+# .. variable:: CPACK_COMPONENT_<compName>_HIDDEN
+#
+#  True if this component is hidden from the user.
+#
+# .. variable:: CPACK_COMPONENT_<compName>_REQUIRED
+#
+#  True if this component is required.
+#
+# .. variable:: CPACK_COMPONENT_<compName>_DISABLED
+#
+#  True if this component is not selected to be installed by default.
+#
+# .. command:: cpack_add_component
+#
+# Describes a CPack installation
+# component named by the COMPONENT argument to a CMake INSTALL command.
+#
+# ::
+#
+#   cpack_add_component(compname
+#                       [DISPLAY_NAME name]
+#                       [DESCRIPTION description]
+#                       [HIDDEN | REQUIRED | DISABLED ]
+#                       [GROUP group]
+#                       [DEPENDS comp1 comp2 ... ]
+#                       [INSTALL_TYPES type1 type2 ... ]
+#                       [DOWNLOADED]
+#                       [ARCHIVE_FILE filename]
+#                       [PLIST filename])
+#
+#
+#
+# The cmake_add_component command describes an installation component,
+# which the user can opt to install or remove as part of the graphical
+# installation process.  compname is the name of the component, as
+# provided to the COMPONENT argument of one or more CMake INSTALL
+# commands.
+#
+# DISPLAY_NAME is the displayed name of the component, used in graphical
+# installers to display the component name.  This value can be any
+# string.
+#
+# DESCRIPTION is an extended description of the component, used in
+# graphical installers to give the user additional information about the
+# component.  Descriptions can span multiple lines using ``\n`` as the
+# line separator.  Typically, these descriptions should be no more than
+# a few lines long.
+#
+# HIDDEN indicates that this component will be hidden in the graphical
+# installer, so that the user cannot directly change whether it is
+# installed or not.
+#
+# REQUIRED indicates that this component is required, and therefore will
+# always be installed.  It will be visible in the graphical installer,
+# but it cannot be unselected.  (Typically, required components are
+# shown greyed out).
+#
+# DISABLED indicates that this component should be disabled (unselected)
+# by default.  The user is free to select this component for
+# installation, unless it is also HIDDEN.
+#
+# DEPENDS lists the components on which this component depends.  If this
+# component is selected, then each of the components listed must also be
+# selected.  The dependency information is encoded within the installer
+# itself, so that users cannot install inconsistent sets of components.
+#
+# GROUP names the component group of which this component is a part.  If
+# not provided, the component will be a standalone component, not part
+# of any component group.  Component groups are described with the
+# cpack_add_component_group command, detailed below.
+#
+# INSTALL_TYPES lists the installation types of which this component is
+# a part.  When one of these installations types is selected, this
+# component will automatically be selected.  Installation types are
+# described with the cpack_add_install_type command, detailed below.
+#
+# DOWNLOADED indicates that this component should be downloaded
+# on-the-fly by the installer, rather than packaged in with the
+# installer itself.  For more information, see the
+# cpack_configure_downloads command.
+#
+# ARCHIVE_FILE provides a name for the archive file created by CPack to
+# be used for downloaded components.  If not supplied, CPack will create
+# a file with some name based on CPACK_PACKAGE_FILE_NAME and the name of
+# the component.  See cpack_configure_downloads for more information.
+#
+# PLIST gives a filename that is passed to pkgbuild with the
+# ``--component-plist`` argument when using the productbuild generator.
+#
+# .. command:: cpack_add_component_group
+#
+# Describes a group of related CPack installation components.
+#
+# ::
+#
+#   cpack_add_component_group(groupname
+#                            [DISPLAY_NAME name]
+#                            [DESCRIPTION description]
+#                            [PARENT_GROUP parent]
+#                            [EXPANDED]
+#                            [BOLD_TITLE])
+#
+#
+#
+# The cpack_add_component_group describes a group of installation
+# components, which will be placed together within the listing of
+# options.  Typically, component groups allow the user to
+# select/deselect all of the components within a single group via a
+# single group-level option.  Use component groups to reduce the
+# complexity of installers with many options.  groupname is an arbitrary
+# name used to identify the group in the GROUP argument of the
+# cpack_add_component command, which is used to place a component in a
+# group.  The name of the group must not conflict with the name of any
+# component.
+#
+# DISPLAY_NAME is the displayed name of the component group, used in
+# graphical installers to display the component group name.  This value
+# can be any string.
+#
+# DESCRIPTION is an extended description of the component group, used in
+# graphical installers to give the user additional information about the
+# components within that group.  Descriptions can span multiple lines
+# using ``\n`` as the line separator.  Typically, these descriptions
+# should be no more than a few lines long.
+#
+# PARENT_GROUP, if supplied, names the parent group of this group.
+# Parent groups are used to establish a hierarchy of groups, providing
+# an arbitrary hierarchy of groups.
+#
+# EXPANDED indicates that, by default, the group should show up as
+# "expanded", so that the user immediately sees all of the components
+# within the group.  Otherwise, the group will initially show up as a
+# single entry.
+#
+# BOLD_TITLE indicates that the group title should appear in bold, to
+# call the user's attention to the group.
+#
+# .. command:: cpack_add_install_type
+#
+# Add a new installation type containing
+# a set of predefined component selections to the graphical installer.
+#
+# ::
+#
+#   cpack_add_install_type(typename
+#                          [DISPLAY_NAME name])
+#
+#
+#
+# The cpack_add_install_type command identifies a set of preselected
+# components that represents a common use case for an application.  For
+# example, a "Developer" install type might include an application along
+# with its header and library files, while an "End user" install type
+# might just include the application's executable.  Each component
+# identifies itself with one or more install types via the INSTALL_TYPES
+# argument to cpack_add_component.
+#
+# DISPLAY_NAME is the displayed name of the install type, which will
+# typically show up in a drop-down box within a graphical installer.
+# This value can be any string.
+#
+# .. command:: cpack_configure_downloads
+#
+# Configure CPack to download
+# selected components on-the-fly as part of the installation process.
+#
+# ::
+#
+#   cpack_configure_downloads(site
+#                             [UPLOAD_DIRECTORY dirname]
+#                             [ALL]
+#                             [ADD_REMOVE|NO_ADD_REMOVE])
+#
+#
+#
+# The cpack_configure_downloads command configures installation-time
+# downloads of selected components.  For each downloadable component,
+# CPack will create an archive containing the contents of that
+# component, which should be uploaded to the given site.  When the user
+# selects that component for installation, the installer will download
+# and extract the component in place.  This feature is useful for
+# creating small installers that only download the requested components,
+# saving bandwidth.  Additionally, the installers are small enough that
+# they will be installed as part of the normal installation process, and
+# the "Change" button in Windows Add/Remove Programs control panel will
+# allow one to add or remove parts of the application after the original
+# installation.  On Windows, the downloaded-components functionality
+# requires the ZipDLL plug-in for NSIS, available at:
+#
+# ::
+#
+#   http://nsis.sourceforge.net/ZipDLL_plug-in
+#
+#
+#
+# On Mac OS X, installers that download components on-the-fly can only
+# be built and installed on system using Mac OS X 10.5 or later.
+#
+# The site argument is a URL where the archives for downloadable
+# components will reside, e.g.,
+# https://cmake.org/files/2.6.1/installer/ All of the archives
+# produced by CPack should be uploaded to that location.
+#
+# UPLOAD_DIRECTORY is the local directory where CPack will create the
+# various archives for each of the components.  The contents of this
+# directory should be uploaded to a location accessible by the URL given
+# in the site argument.  If omitted, CPack will use the directory
+# CPackUploads inside the CMake binary directory to store the generated
+# archives.
+#
+# The ALL flag indicates that all components be downloaded.  Otherwise,
+# only those components explicitly marked as DOWNLOADED or that have a
+# specified ARCHIVE_FILE will be downloaded.  Additionally, the ALL
+# option implies ADD_REMOVE (unless NO_ADD_REMOVE is specified).
+#
+# ADD_REMOVE indicates that CPack should install a copy of the installer
+# that can be called from Windows' Add/Remove Programs dialog (via the
+# "Modify" button) to change the set of installed components.
+# NO_ADD_REMOVE turns off this behavior.  This option is ignored on Mac
+# OS X.
+
+# Define var in order to avoid multiple inclusion
+if(NOT CPackComponent_CMake_INCLUDED)
+set(CPackComponent_CMake_INCLUDED 1)
+
+# Macro that appends a SET command for the given variable name (var)
+# to the macro named strvar, but only if the variable named "var"
+# has been defined. The string will eventually be appended to a CPack
+# configuration file.
+macro(cpack_append_variable_set_command var strvar)
+  if (DEFINED ${var})
+    string(APPEND ${strvar} "set(${var}")
+    foreach(APPENDVAL ${${var}})
+      string(APPEND ${strvar} " ${APPENDVAL}")
+    endforeach()
+    string(APPEND ${strvar} ")\n")
+  endif ()
+endmacro()
+
+# Macro that appends a SET command for the given variable name (var)
+# to the macro named strvar, but only if the variable named "var"
+# has been defined and is a string. The string will eventually be
+# appended to a CPack configuration file.
+macro(cpack_append_string_variable_set_command var strvar)
+  if (DEFINED ${var})
+    list(LENGTH ${var} CPACK_APP_VALUE_LEN)
+    if(${CPACK_APP_VALUE_LEN} EQUAL 1)
+      string(APPEND ${strvar} "set(${var} \"${${var}}\")\n")
+    endif()
+  endif ()
+endmacro()
+
+# Macro that appends a SET command for the given list variable name (var)
+# to the macro named strvar, but only if the variable named "var"
+# has been defined. It's like add variable, but wrap each item to quotes.
+# The string will eventually be appended to a CPack configuration file.
+macro(cpack_append_list_variable_set_command var strvar)
+  if (DEFINED ${var})
+    string(APPEND ${strvar} "set(${var}")
+    foreach(_val IN LISTS ${var})
+      string(APPEND ${strvar} "\n  \"${_val}\"")
+    endforeach()
+    string(APPEND ${strvar} ")\n")
+  endif ()
+endmacro()
+
+# Macro that appends a SET command for the given variable name (var)
+# to the macro named strvar, but only if the variable named "var"
+# has been set to true. The string will eventually be
+# appended to a CPack configuration file.
+macro(cpack_append_option_set_command var strvar)
+  if (${var})
+    list(LENGTH ${var} CPACK_APP_VALUE_LEN)
+    if(${CPACK_APP_VALUE_LEN} EQUAL 1)
+      string(APPEND ${strvar} "set(${var} TRUE)\n")
+    endif()
+  endif ()
+endmacro()
+
+# Macro that adds a component to the CPack installer
+macro(cpack_add_component compname)
+  string(TOUPPER ${compname} _CPACK_ADDCOMP_UNAME)
+  cmake_parse_arguments(CPACK_COMPONENT_${_CPACK_ADDCOMP_UNAME}
+    "HIDDEN;REQUIRED;DISABLED;DOWNLOADED"
+    "DISPLAY_NAME;DESCRIPTION;GROUP;ARCHIVE_FILE;PLIST"
+    "DEPENDS;INSTALL_TYPES"
+    ${ARGN}
+    )
+
+  if (CPACK_COMPONENT_${_CPACK_ADDCOMP_UNAME}_DOWNLOADED)
+    set(_CPACK_ADDCOMP_STR "\n# Configuration for downloaded component \"${compname}\"\n")
+  else ()
+    set(_CPACK_ADDCOMP_STR "\n# Configuration for component \"${compname}\"\n")
+  endif ()
+
+  if(NOT CPACK_MONOLITHIC_INSTALL)
+    # If the user didn't set CPACK_COMPONENTS_ALL explicitly, update the
+    # value of CPACK_COMPONENTS_ALL in the configuration file. This will
+    # take care of any components that have been added after the CPack
+    # moduled was included.
+    if(NOT CPACK_COMPONENTS_ALL_SET_BY_USER)
+      get_cmake_property(_CPACK_ADDCOMP_COMPONENTS COMPONENTS)
+      string(APPEND _CPACK_ADDCOMP_STR "\nSET(CPACK_COMPONENTS_ALL")
+      foreach(COMP ${_CPACK_ADDCOMP_COMPONENTS})
+       string(APPEND _CPACK_ADDCOMP_STR " ${COMP}")
+      endforeach()
+      string(APPEND _CPACK_ADDCOMP_STR ")\n")
+    endif()
+  endif()
+
+  cpack_append_string_variable_set_command(
+    CPACK_COMPONENT_${_CPACK_ADDCOMP_UNAME}_DISPLAY_NAME
+    _CPACK_ADDCOMP_STR)
+  cpack_append_string_variable_set_command(
+    CPACK_COMPONENT_${_CPACK_ADDCOMP_UNAME}_DESCRIPTION
+    _CPACK_ADDCOMP_STR)
+  cpack_append_variable_set_command(
+    CPACK_COMPONENT_${_CPACK_ADDCOMP_UNAME}_GROUP
+    _CPACK_ADDCOMP_STR)
+  cpack_append_variable_set_command(
+    CPACK_COMPONENT_${_CPACK_ADDCOMP_UNAME}_DEPENDS
+    _CPACK_ADDCOMP_STR)
+  cpack_append_variable_set_command(
+    CPACK_COMPONENT_${_CPACK_ADDCOMP_UNAME}_INSTALL_TYPES
+    _CPACK_ADDCOMP_STR)
+  cpack_append_string_variable_set_command(
+    CPACK_COMPONENT_${_CPACK_ADDCOMP_UNAME}_ARCHIVE_FILE
+    _CPACK_ADDCOMP_STR)
+  cpack_append_option_set_command(
+    CPACK_COMPONENT_${_CPACK_ADDCOMP_UNAME}_HIDDEN
+    _CPACK_ADDCOMP_STR)
+  cpack_append_option_set_command(
+    CPACK_COMPONENT_${_CPACK_ADDCOMP_UNAME}_REQUIRED
+    _CPACK_ADDCOMP_STR)
+  cpack_append_option_set_command(
+    CPACK_COMPONENT_${_CPACK_ADDCOMP_UNAME}_DISABLED
+    _CPACK_ADDCOMP_STR)
+  cpack_append_option_set_command(
+    CPACK_COMPONENT_${_CPACK_ADDCOMP_UNAME}_DOWNLOADED
+    _CPACK_ADDCOMP_STR)
+  cpack_append_string_variable_set_command(
+    CPACK_COMPONENT_${_CPACK_ADDCOMP_UNAME}_PLIST
+    _CPACK_ADDCOMP_STR)
+  # Backward compatibility issue.
+  # Write to config iff the macros is used after CPack.cmake has been
+  # included, other it's not necessary because the variables
+  # will be encoded by cpack_encode_variables.
+  if(CPack_CMake_INCLUDED)
+    file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "${_CPACK_ADDCOMP_STR}")
+  endif()
+endmacro()
+
+# Macro that adds a component group to the CPack installer
+macro(cpack_add_component_group grpname)
+  string(TOUPPER ${grpname} _CPACK_ADDGRP_UNAME)
+  cmake_parse_arguments(CPACK_COMPONENT_GROUP_${_CPACK_ADDGRP_UNAME}
+    "EXPANDED;BOLD_TITLE"
+    "DISPLAY_NAME;DESCRIPTION;PARENT_GROUP"
+    ""
+    ${ARGN}
+    )
+
+  set(_CPACK_ADDGRP_STR "\n# Configuration for component group \"${grpname}\"\n")
+  cpack_append_string_variable_set_command(
+    CPACK_COMPONENT_GROUP_${_CPACK_ADDGRP_UNAME}_DISPLAY_NAME
+    _CPACK_ADDGRP_STR)
+  cpack_append_string_variable_set_command(
+    CPACK_COMPONENT_GROUP_${_CPACK_ADDGRP_UNAME}_DESCRIPTION
+    _CPACK_ADDGRP_STR)
+  cpack_append_string_variable_set_command(
+    CPACK_COMPONENT_GROUP_${_CPACK_ADDGRP_UNAME}_PARENT_GROUP
+    _CPACK_ADDGRP_STR)
+  cpack_append_option_set_command(
+    CPACK_COMPONENT_GROUP_${_CPACK_ADDGRP_UNAME}_EXPANDED
+    _CPACK_ADDGRP_STR)
+  cpack_append_option_set_command(
+    CPACK_COMPONENT_GROUP_${_CPACK_ADDGRP_UNAME}_BOLD_TITLE
+    _CPACK_ADDGRP_STR)
+  # Backward compatibility issue.
+  # Write to config iff the macros is used after CPack.cmake has been
+  # included, other it's not necessary because the variables
+  # will be encoded by cpack_encode_variables.
+  if(CPack_CMake_INCLUDED)
+    file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "${_CPACK_ADDGRP_STR}")
+  endif()
+endmacro()
+
+# Macro that adds an installation type to the CPack installer
+macro(cpack_add_install_type insttype)
+  string(TOUPPER ${insttype} _CPACK_INSTTYPE_UNAME)
+  cmake_parse_arguments(CPACK_INSTALL_TYPE_${_CPACK_INSTTYPE_UNAME}
+    ""
+    "DISPLAY_NAME"
+    ""
+    ${ARGN}
+    )
+
+  set(_CPACK_INSTTYPE_STR
+    "\n# Configuration for installation type \"${insttype}\"\n")
+  string(APPEND _CPACK_INSTTYPE_STR
+    "list(APPEND CPACK_ALL_INSTALL_TYPES ${insttype})\n")
+  cpack_append_string_variable_set_command(
+    CPACK_INSTALL_TYPE_${_CPACK_INSTTYPE_UNAME}_DISPLAY_NAME
+    _CPACK_INSTTYPE_STR)
+  # Backward compatibility issue.
+  # Write to config iff the macros is used after CPack.cmake has been
+  # included, other it's not necessary because the variables
+  # will be encoded by cpack_encode_variables.
+  if(CPack_CMake_INCLUDED)
+    file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "${_CPACK_INSTTYPE_STR}")
+  endif()
+endmacro()
+
+macro(cpack_configure_downloads site)
+  cmake_parse_arguments(CPACK_DOWNLOAD
+    "ALL;ADD_REMOVE;NO_ADD_REMOVE"
+    "UPLOAD_DIRECTORY"
+    ""
+    ${ARGN}
+    )
+
+  set(CPACK_CONFIG_DL_STR
+    "\n# Downloaded components configuration\n")
+  set(CPACK_UPLOAD_DIRECTORY ${CPACK_DOWNLOAD_UPLOAD_DIRECTORY})
+  set(CPACK_DOWNLOAD_SITE ${site})
+  cpack_append_string_variable_set_command(
+    CPACK_DOWNLOAD_SITE
+    CPACK_CONFIG_DL_STR)
+  cpack_append_string_variable_set_command(
+    CPACK_UPLOAD_DIRECTORY
+    CPACK_CONFIG_DL_STR)
+  cpack_append_option_set_command(
+    CPACK_DOWNLOAD_ALL
+    CPACK_CONFIG_DL_STR)
+  if (${CPACK_DOWNLOAD_ALL} AND NOT ${CPACK_DOWNLOAD_NO_ADD_REMOVE})
+    set(CPACK_DOWNLOAD_ADD_REMOVE ON)
+  endif ()
+  set(CPACK_ADD_REMOVE ${CPACK_DOWNLOAD_ADD_REMOVE})
+  cpack_append_option_set_command(
+    CPACK_ADD_REMOVE
+    CPACK_CONFIG_DL_STR)
+  # Backward compatibility issue.
+  # Write to config iff the macros is used after CPack.cmake has been
+  # included, other it's not necessary because the variables
+  # will be encoded by cpack_encode_variables.
+  if(CPack_CMake_INCLUDED)
+    file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "${CPACK_CONFIG_DL_STR}")
+  endif()
+endmacro()
+endif()
diff --git a/share/cmake-3.10/Modules/CPackCygwin.cmake b/share/cmake-3.10/Modules/CPackCygwin.cmake
new file mode 100644
index 0000000..6d203c3
--- /dev/null
+++ b/share/cmake-3.10/Modules/CPackCygwin.cmake
@@ -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.
+
+#.rst:
+# CPackCygwin
+# -----------
+#
+# Cygwin CPack generator (Cygwin).
+#
+# 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.10/Modules/CPackDMG.cmake b/share/cmake-3.10/Modules/CPackDMG.cmake
new file mode 100644
index 0000000..bda600f
--- /dev/null
+++ b/share/cmake-3.10/Modules/CPackDMG.cmake
@@ -0,0 +1,105 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#.rst:
+# CPackDMG
+# --------
+#
+# DragNDrop CPack generator (Mac OS X).
+#
+# Variables specific to CPack DragNDrop generator
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+#
+# The following variables are specific to the DragNDrop installers built
+# on Mac OS X:
+#
+# .. 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 e.g. 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`` 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.
+#
+# .. 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_COMMAND_HDIUTIL
+#
+#  Path to the hdiutil(1) command used to operate on disk image files on Mac
+#  OS X. 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 Mac OS X. 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 Mac OS X. 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.10/Modules/CPackDeb.cmake b/share/cmake-3.10/Modules/CPackDeb.cmake
new file mode 100644
index 0000000..1879827
--- /dev/null
+++ b/share/cmake-3.10/Modules/CPackDeb.cmake
@@ -0,0 +1,1119 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#.rst:
+# CPackDeb
+# --------
+#
+# The built in (binary) CPack Deb generator (Unix only)
+#
+# Variables specific to CPack Debian (DEB) generator
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+#
+# CPackDeb may be used to create Deb package using :module:`CPack`.
+# CPackDeb is a :module:`CPack` generator thus it uses the ``CPACK_XXX``
+# variables used by :module:`CPack`.
+#
+# CPackDeb 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.
+#
+# CPackDeb has specific features which are controlled by the specifics
+# :code:`CPACK_DEBIAN_XXX` variables.
+#
+# :code:`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 CPackDeb wiki resources that are here for historic reasons and
+# are no longer maintained but may still prove useful:
+#
+#  - https://cmake.org/Wiki/CMake:CPackConfiguration
+#  - https://cmake.org/Wiki/CMake:CPackPackageGenerators#DEB_.28UNIX_only.29
+#
+# List of CPackDEB 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 CPackDeb 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 CPackDeb 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 :code:`dpkg --print-architecture` (or :code:`i386`
+#    if :code:`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   : :code:`CPACK_PACKAGE_CONTACT`
+#
+# .. variable:: CPACK_DEBIAN_PACKAGE_DESCRIPTION
+#               CPACK_COMPONENT_<COMPONENT>_DESCRIPTION
+#
+#  The Debian package description
+#
+#  * Mandatory : YES
+#  * Default   :
+#
+#    - :variable:`CPACK_DEBIAN_PACKAGE_DESCRIPTION` if set or
+#    - :variable:`CPACK_PACKAGE_DESCRIPTION_SUMMARY`
+#
+#
+# .. 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   : "paxr"
+#
+#  Possible values are:
+#
+#  - paxr
+#  - gnutar
+#
+#  .. note::
+#
+#    Default pax archive format is the most portable format and generates
+#    packages that do not treat sparse files specially.
+#    GNU tar format on the other hand supports longer filenames.
+#
+# .. 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   : -
+#
+#  .. 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 :code:`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 :code:`dpkg-shlibdeps`
+#    may fail to find your own shared libs.
+#    See https://cmake.org/Wiki/CMake_RPATH_handling.
+#
+# .. variable:: CPACK_DEBIAN_PACKAGE_DEBUG
+#
+#  May be set when invoking cpack in order to trace debug information
+#  during CPackDeb 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 :code:`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),
+#  :code:`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, :code:`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.
+#
+# 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.
+
+# 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()
+
+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_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}")
+
+  # 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()
+
+  if(CPACK_DEBIAN_PACKAGE_SHLIBDEPS OR CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS)
+    # Generating binary list - Get type of all install files
+    cmake_policy(PUSH)
+      # Tell file(GLOB_RECURSE) not to follow directory symlinks
+      # even if the project does not set this policy to NEW.
+      cmake_policy(SET CMP0009 NEW)
+      file(GLOB_RECURSE FILE_PATHS_ LIST_DIRECTORIES false RELATIVE "${WDIR}" "${WDIR}/*")
+    cmake_policy(POP)
+
+    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 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()
+    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 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()
+        set(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 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_ 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)
+      set(COMPONENT_DEPENDS "")
+      foreach (_PACK ${CPACK_COMPONENT_${_local_component_name}_DEPENDS})
+        get_component_package_name(_PACK_NAME "${_PACK}")
+        if(COMPONENT_DEPENDS)
+          set(COMPONENT_DEPENDS "${_PACK_NAME} (= ${CPACK_DEBIAN_PACKAGE_VERSION}), ${COMPONENT_DEPENDS}")
+        else()
+          set(COMPONENT_DEPENDS "${_PACK_NAME} (= ${CPACK_DEBIAN_PACKAGE_VERSION})")
+        endif()
+      endforeach()
+      if(COMPONENT_DEPENDS)
+        if(CPACK_DEBIAN_PACKAGE_DEPENDS)
+          set(CPACK_DEBIAN_PACKAGE_DEPENDS "${COMPONENT_DEPENDS}, ${CPACK_DEBIAN_PACKAGE_DEPENDS}")
+        else()
+          set(CPACK_DEBIAN_PACKAGE_DEPENDS "${COMPONENT_DEPENDS}")
+        endif()
+      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(NOT "${CPACK_DEBIAN_PACKAGE_AUTO_DEPENDS}" STREQUAL "")
+    if (CPACK_DEBIAN_PACKAGE_DEPENDS)
+      set (CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, ${CPACK_DEBIAN_PACKAGE_AUTO_DEPENDS}")
+    else ()
+      set (CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_AUTO_DEPENDS}")
+    endif ()
+  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)
+  if(NOT CPACK_DEB_PACKAGE_COMPONENT)
+    if(NOT CPACK_DEBIAN_PACKAGE_DESCRIPTION)
+      if(NOT CPACK_PACKAGE_DESCRIPTION_SUMMARY)
+        message(FATAL_ERROR "CPackDeb: Debian package requires a summary for a package, set CPACK_PACKAGE_DESCRIPTION_SUMMARY or CPACK_DEBIAN_PACKAGE_DESCRIPTION")
+      endif()
+      set(CPACK_DEBIAN_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION_SUMMARY})
+    endif()
+  else()
+    set(component_description_var CPACK_COMPONENT_${_local_component_name}_DESCRIPTION)
+
+    # component description overrides package description
+    if(${component_description_var})
+      set(CPACK_DEBIAN_PACKAGE_DESCRIPTION ${${component_description_var}})
+    elseif(NOT CPACK_DEBIAN_PACKAGE_DESCRIPTION)
+      if(NOT CPACK_PACKAGE_DESCRIPTION_SUMMARY)
+        message(FATAL_ERROR "CPackDeb: Debian package requires a summary for a package, set CPACK_PACKAGE_DESCRIPTION_SUMMARY or CPACK_DEBIAN_PACKAGE_DESCRIPTION or ${component_description_var}")
+      endif()
+      set(CPACK_DEBIAN_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION_SUMMARY})
+    endif()
+  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)
+    set(archive_types_ "paxr;gnutar")
+    cmake_policy(PUSH)
+      cmake_policy(SET CMP0057 NEW)
+      if(NOT CPACK_DEBIAN_ARCHIVE_TYPE IN_LIST archive_types_)
+        message(FATAL_ERROR "CPACK_DEBIAN_ARCHIVE_TYPE set to unsupported"
+          "type ${CPACK_DEBIAN_ARCHIVE_TYPE}")
+      endif()
+    cmake_policy(POP)
+  else()
+    set(CPACK_DEBIAN_ARCHIVE_TYPE "paxr")
+  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_ "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()
+
+  set(CPACK_DEBIAN_PACKAGE_SHLIBS_LIST "")
+
+  if (NOT CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY)
+    set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY "=")
+  endif()
+
+  find_program(READELF_EXECUTABLE NAMES readelf)
+
+  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 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()
+      if (CPACK_DEBIAN_PACKAGE_SHLIBS_LIST)
+        string(REPLACE ";" "\n" CPACK_DEBIAN_PACKAGE_SHLIBS_LIST "${CPACK_DEBIAN_PACKAGE_SHLIBS_LIST}")
+      endif()
+    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 ${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 ${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 corrent 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")
+    else()
+      cmake_policy(PUSH)
+        cmake_policy(SET CMP0010 NEW)
+        if(NOT CPACK_DEBIAN_FILE_NAME MATCHES ".*\\.(deb|ipk)")
+      cmake_policy(POP)
+          message(FATAL_ERROR "'${CPACK_DEBIAN_FILE_NAME}' is not a valid DEB package file name as it must end with '.deb' or '.ipk'!")
+        endif()
+      cmake_policy(POP)
+
+      set(CPACK_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}")
+  endif() # else() back compatibility - don't change the name
+
+  # 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)
+endfunction()
+
+cpack_deb_prepare_package_vars()
diff --git a/share/cmake-3.10/Modules/CPackFreeBSD.cmake b/share/cmake-3.10/Modules/CPackFreeBSD.cmake
new file mode 100644
index 0000000..7fec78a
--- /dev/null
+++ b/share/cmake-3.10/Modules/CPackFreeBSD.cmake
@@ -0,0 +1,246 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+CPackFreeBSD
+------------
+
+The built in (binary) CPack FreeBSD (pkg) generator (Unix only)
+
+Variables specific to CPack FreeBSD (pkg) generator
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+CPackFreeBSD 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`.
+
+CPackFreeBSD 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 :module:`CPackDeb`
+generator. it also tries to re-use RPM packaging information when Debian
+does not specify.
+
+CPackFreeBSD generator should work on any host with libpkg installed. The
+packages it produces are specific to the host architecture and ABI.
+
+CPackFreeBSD sets package-metadata through :code:`CPACK_FREEBSD_XXX` variables.
+CPackFreeBSD, unlike CPackDeb, 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:`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
+#]=======================================================================]
+
+
+
+if(CMAKE_BINARY_DIR)
+  message(FATAL_ERROR "CPackFreeBSD.cmake may only be used by CPack internally.")
+endif()
+
+if(NOT UNIX)
+  message(FATAL_ERROR "CPackFreeBSD.cmake may only be used under UNIX.")
+endif()
+
+
+###
+#
+# These bits are copied from the Debian packaging file; slightly modified.
+# They are used for filling in FreeBSD-packaging variables that can take
+# on values from elsewhere -- e.g. the package description may as well be
+# copied from Debian.
+#
+function(_cpack_freebsd_fallback_var OUTPUT_VAR_NAME)
+  set(FALLBACK_VAR_NAMES ${ARGN})
+
+  set(VALUE "${${OUTPUT_VAR_NAME}}")
+  if(VALUE)
+    return()
+  endif()
+
+  foreach(variable_name IN LISTS FALLBACK_VAR_NAMES)
+    if(${variable_name})
+      set(${OUTPUT_VAR_NAME} "${${variable_name}}" PARENT_SCOPE)
+      set(VALUE "${${variable_name}}")
+      break()
+    endif()
+  endforeach()
+  if(NOT VALUE)
+    message(WARNING "Variable ${OUTPUT_VAR_NAME} could not be given a fallback value from any variable ${FALLBACK_VAR_NAMES}.")
+  endif()
+endfunction()
+
+function(check_required_var VAR_NAME)
+  if(NOT ${VAR_NAME})
+    message(FATAL_ERROR "Variable ${VAR_NAME} is not set.")
+  endif()
+endfunction()
+
+set(_cpack_freebsd_fallback_origin "misc/bogus")
+
+_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_NAME"
+    "CPACK_PACKAGE_NAME"
+    "CMAKE_PROJECT_NAME"
+    )
+
+set(_cpack_freebsd_fallback_www "http://example.com/?pkg=${CPACK_FREEBSD_PACKAGE_NAME}")
+
+_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_COMMENT"
+    "CPACK_PACKAGE_DESCRIPTION_SUMMARY"
+    )
+
+# TODO: maybe read the PACKAGE_DESCRIPTION file for the longer
+#       FreeBSD pkg-descr?
+_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_DESCRIPTION"
+    "CPACK_DEBIAN_PACKAGE_DESCRIPTION"
+    "CPACK_PACKAGE_DESCRIPTION_SUMMARY"
+    "PACKAGE_DESCRIPTION"
+    )
+
+# There's really only one homepage for a project, so
+# re-use the Debian setting if it's there.
+_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_WWW"
+    "CPACK_DEBIAN_PACKAGE_HOMEPAGE"
+    "_cpack_freebsd_fallback_www"
+    )
+
+_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_VERSION"
+    "CMAKE_PROJECT_VERSION"
+    "${CMAKE_PROJECT_NAME}_VERSION"
+    "PROJECT_VERSION"
+    "CPACK_PACKAGE_VERSION"
+    "CPACK_PACKAGE_VERSION"
+    )
+
+_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_MAINTAINER"
+    "CPACK_PACKAGE_CONTACT"
+    )
+
+_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_LICENSE"
+    "CPACK_RPM_PACKAGE_LICENSE"
+    )
+
+_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_ORIGIN"
+  "_cpack_freebsd_fallback_origin"
+  )
+
+if(NOT CPACK_FREEBSD_PACKAGE_CATEGORIES)
+  string(REGEX REPLACE "/.*" "" CPACK_FREEBSD_PACKAGE_CATEGORIES ${CPACK_FREEBSD_PACKAGE_ORIGIN})
+endif()
+
+check_required_var("CPACK_FREEBSD_PACKAGE_NAME")
+check_required_var("CPACK_FREEBSD_PACKAGE_ORIGIN")
+check_required_var("CPACK_FREEBSD_PACKAGE_VERSION")
+check_required_var("CPACK_FREEBSD_PACKAGE_MAINTAINER")
+check_required_var("CPACK_FREEBSD_PACKAGE_COMMENT")
+check_required_var("CPACK_FREEBSD_PACKAGE_DESCRIPTION")
+check_required_var("CPACK_FREEBSD_PACKAGE_WWW")
+check_required_var("CPACK_FREEBSD_PACKAGE_LICENSE")
diff --git a/share/cmake-3.10/Modules/CPackIFW.cmake b/share/cmake-3.10/Modules/CPackIFW.cmake
new file mode 100644
index 0000000..8d8b070
--- /dev/null
+++ b/share/cmake-3.10/Modules/CPackIFW.cmake
@@ -0,0 +1,1074 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#.rst:
+# CPackIFW
+# --------
+#
+# .. _QtIFW: http://doc.qt.io/qtinstallerframework/index.html
+#
+# This module looks for the location of the command line utilities supplied
+# with the Qt Installer Framework (QtIFW_).
+#
+# The module also defines several commands to control the behavior of the
+# CPack ``IFW`` generator.
+#
+#
+# Overview
+# ^^^^^^^^
+#
+# CPack ``IFW`` generator helps you to create online and offline
+# binary cross-platform installers with a graphical user interface.
+#
+# CPack IFW generator prepares project installation and generates configuration
+# and meta information for QtIFW_ tools.
+#
+# The QtIFW_ provides a set of tools and utilities to create
+# installers for the supported desktop Qt platforms: Linux, Microsoft Windows,
+# and Mac OS X.
+#
+# You should also install QtIFW_ to use CPack ``IFW`` generator.
+#
+# Hints
+# ^^^^^
+#
+# 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.
+#
+# 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"
+#      )
+#
+# 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' (Mac OS X),
+#  '.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_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`"
+#
+#  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_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.
+#
+# Tools
+# """""
+#
+# .. variable:: CPACK_IFW_FRAMEWORK_VERSION
+#
+#  The version of used QtIFW_ tools.
+#
+# .. variable:: CPACK_IFW_BINARYCREATOR_EXECUTABLE
+#
+#  The path to "binarycreator" command line client.
+#
+#  This variable is cached and may be configured if needed.
+#
+# .. variable:: CPACK_IFW_REPOGEN_EXECUTABLE
+#
+#  The path to "repogen" command line client.
+#
+#  This variable is cached and may be configured if needed.
+#
+# .. variable:: CPACK_IFW_INSTALLERBASE_EXECUTABLE
+#
+#  The path to "installerbase" installer executable base.
+#
+#  This variable is cached and may be configured if needed.
+#
+# .. variable:: CPACK_IFW_DEVTOOL_EXECUTABLE
+#
+#  The path to "devtool" command line client.
+#
+#  This variable is cached and may be configured if needed.
+#
+# 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 ``REQUARED`` 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`.
+#
+#
+# Example usage
+# ^^^^^^^^^^^^^
+#
+# .. code-block:: cmake
+#
+#    set(CPACK_PACKAGE_NAME "MyPackage")
+#    set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MyPackage Installation Example")
+#    set(CPACK_PACKAGE_VERSION "1.0.0") # Version of installer
+#
+#    include(CPack)
+#    include(CPackIFW)
+#
+#    cpack_add_component(myapp
+#        DISPLAY_NAME "MyApp"
+#        DESCRIPTION "My Application") # Default description
+#    cpack_ifw_configure_component(myapp
+#        DESCRIPTION ru_RU "Мое Приложение" # Localized description
+#        VERSION "1.2.3" # Version of component
+#        SCRIPT "operations.qs")
+#    cpack_add_component(mybigplugin
+#        DISPLAY_NAME "MyBigPlugin"
+#        DESCRIPTION "My Big Downloadable Plugin"
+#        DOWNLOADED)
+#    cpack_ifw_add_repository(myrepo
+#        URL "http://example.com/ifw/repo/myapp"
+#        DISPLAY_NAME "My Application Repository")
+#
+#
+# Online installer
+# ^^^^^^^^^^^^^^^^
+#
+# By default CPack IFW generator makes offline installer. This means that all
+# components will be packaged into a binary file.
+#
+# To make a component downloaded, you must set the ``DOWNLOADED`` option in
+# :command:`cpack_add_component`.
+#
+# Then you would use the command :command:`cpack_configure_downloads`.
+# If you set ``ALL`` option all components will be downloaded.
+#
+# You also can use command :command:`cpack_ifw_add_repository` and
+# variable :variable:`CPACK_IFW_DOWNLOAD_ALL` for more specific configuration.
+#
+# CPack IFW generator creates "repository" dir in current binary dir. You
+# would copy content of this dir to specified ``site`` (``url``).
+#
+# 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 you platform from Qt site:
+#  http://download.qt.io/official_releases/qt-installer-framework
+#
+
+#=============================================================================
+# 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.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()
+  # Finaly 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\" manualy.")
+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}\" is not exists")
+      set(${_ifw_script_macro})
+    endif()
+  endif()
+endmacro()
+
+# Resolve full path to lisense 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_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.10/Modules/CPackIFWConfigureFile.cmake b/share/cmake-3.10/Modules/CPackIFWConfigureFile.cmake
new file mode 100644
index 0000000..790574a
--- /dev/null
+++ b/share/cmake-3.10/Modules/CPackIFWConfigureFile.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.
+
+#.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.10/Modules/CPackNSIS.cmake b/share/cmake-3.10/Modules/CPackNSIS.cmake
new file mode 100644
index 0000000..18d1871
--- /dev/null
+++ b/share/cmake-3.10/Modules/CPackNSIS.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:
+# CPackNSIS
+# ---------
+#
+# CPack NSIS generator specific options
+#
+# Variables specific to CPack NSIS generator
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+#
+# The following variables are specific to the graphical installers built
+# on Windows using the Nullsoft Installation 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 Add/Remove Program
+#  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 an 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")
+#
+
+#FIXME we should put NSIS specific code here
+#FIXME but I'm not doing it because I'm not able to test it...
diff --git a/share/cmake-3.10/Modules/CPackPackageMaker.cmake b/share/cmake-3.10/Modules/CPackPackageMaker.cmake
new file mode 100644
index 0000000..c2ca4c6
--- /dev/null
+++ b/share/cmake-3.10/Modules/CPackPackageMaker.cmake
@@ -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.
+
+#.rst:
+# CPackPackageMaker
+# -----------------
+#
+# PackageMaker CPack generator (Mac OS X).
+#
+# Variables specific to CPack PackageMaker generator
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+#
+# The following variable is specific to installers built on Mac
+# OS X using PackageMaker:
+#
+# .. variable:: CPACK_OSX_PACKAGE_VERSION
+#
+#  The version of Mac OS X that the resulting PackageMaker archive should be
+#  compatible with. Different versions of Mac OS X support different
+#  features. For example, CPack can only build component-based installers for
+#  Mac OS X 10.4 or newer, and can only build installers that download
+#  component son-the-fly for Mac OS X 10.5 or newer. If left blank, this value
+#  will be set to the minimum version of Mac OS X 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 Mac OS X, and
+#  don't mind missing extra features available in the installer shipping with
+#  later versions of Mac OS X.
diff --git a/share/cmake-3.10/Modules/CPackProductBuild.cmake b/share/cmake-3.10/Modules/CPackProductBuild.cmake
new file mode 100644
index 0000000..4779b95
--- /dev/null
+++ b/share/cmake-3.10/Modules/CPackProductBuild.cmake
@@ -0,0 +1,56 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#.rst:
+# CPackProductBuild
+# -----------------
+#
+# productbuild CPack generator (Mac OS X).
+#
+# Variables specific to CPack productbuild generator
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+#
+# The following variable is specific to installers built on Mac
+# OS X using productbuild:
+#
+# .. variable:: CPACK_COMMAND_PRODUCTBUILD
+#
+#  Path to the productbuild(1) command used to generate a product archive for
+#  the OS X 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 OS X component package
+#  on OS X.  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_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.
diff --git a/share/cmake-3.10/Modules/CPackRPM.cmake b/share/cmake-3.10/Modules/CPackRPM.cmake
new file mode 100644
index 0000000..9f77ec3
--- /dev/null
+++ b/share/cmake-3.10/Modules/CPackRPM.cmake
@@ -0,0 +1,2774 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#.rst:
+# CPackRPM
+# --------
+#
+# The built in (binary) CPack RPM generator (Unix only)
+#
+# Variables specific to CPack RPM generator
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+#
+# CPackRPM may be used to create RPM packages using :module:`CPack`.
+# CPackRPM is a :module:`CPack` generator thus it uses the ``CPACK_XXX``
+# variables used by :module:`CPack`.
+#
+# CPackRPM has specific features which are controlled by the specifics
+# :code:`CPACK_RPM_XXX` variables.
+#
+# :code:`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 (for 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 CPackRPM wiki resources that are here for historic reasons and
+# are no longer maintained but may still prove useful:
+#
+#  - https://cmake.org/Wiki/CMake:CPackConfiguration
+#  - https://cmake.org/Wiki/CMake:CPackPackageGenerators#RPM_.28Unix_Only.29
+#
+# List of CPackRPM specific variables:
+#
+# .. variable:: CPACK_RPM_COMPONENT_INSTALL
+#
+#  Enable component packaging for CPackRPM
+#
+#  * 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 it's 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:: 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 CPackRPM 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_POST_INSTALL_SCRIPT_FILE` instead.
+#
+#  * Mandatory : NO
+#  * Default   : -
+#  * Deprecated: YES
+#
+#  This way of specifying post-install script is deprecated, use
+#  :variable:`CPACK_RPM_POST_INSTALL_SCRIPT_FILE`.
+#  May be used to set an RPM post-install command inside the spec file.
+#  For example setting it to ``/bin/true`` may be used to prevent
+#  rpmbuild to strip binaries.
+#
+# .. 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.
+#
+# .. variable:: CPACK_RPM_PACKAGE_DEBUG
+#
+#  Toggle CPackRPM 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 CPackRPM 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
+#
+#  Path to file containing pre (un)install script.
+#
+#  * Mandatory : NO
+#  * Default   : -
+#
+#  May be used to embed a pre (un)installation 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 (un)install
+#  script for each component can be overridden with
+#  ``CPACK_RPM_<COMPONENT>_PRE_INSTALL_SCRIPT_FILE`` and
+#  ``CPACK_RPM_<COMPONENT>_PRE_UNINSTALL_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
+#
+#  Path to file containing post (un)install script.
+#
+#  * Mandatory : NO
+#  * Default   : -
+#
+#  May be used to embed a post (un)installation 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 (un)install
+#  script for each component can be overridden with
+#  ``CPACK_RPM_<COMPONENT>_POST_INSTALL_SCRIPT_FILE`` and
+#  ``CPACK_RPM_<COMPONENT>_POST_UNINSTALL_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
+#  CPackRPM 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 defaut 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 CPackRPM 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.
+#
+# Packaging of Symbolic Links
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+#
+# CPackRPM 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 it's 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 be empty.
+#
+# .. 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 additionaly 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 product 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 it's 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")
+
+# Author: Eric Noulard with the help of Alexander Neundorf.
+
+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_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
+  cmake_policy(PUSH)
+    # Tell file(GLOB_RECURSE) not to follow directory symlinks
+    # even if the project does not set this policy to NEW.
+    cmake_policy(SET CMP0009 NEW)
+    file(GLOB_RECURSE FILE_PATHS_ "${WDIR}/*")
+  cmake_policy(POP)
+  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
+  cmake_policy(PUSH)
+    cmake_policy(SET CMP0009 NEW)
+    file(GLOB_RECURSE CPACK_RPM_INSTALL_FILES LIST_DIRECTORIES true RELATIVE "${WDIR}" "${WDIR}/*")
+  cmake_policy(POP)
+  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}")
+        cmake_policy(PUSH)
+          cmake_policy(SET CMP0007 NEW)
+          list(REMOVE_AT _CPACK_RPM_PACKAGE_PREFIX_ELEMS -1)
+        cmake_policy(POP)
+        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_)
+
+        if(SYMLINK_POINT_ MATCHES "${WDIR}/.*")
+          # 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 ouside 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 that if the given file was 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()
+    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()
+
+  # 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})
+      cmake_policy(PUSH)
+        cmake_policy(SET CMP0057 NEW)
+        # Prefix can be replaced by Prefixes but the old version stil 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_)
+          cmake_policy(POP)
+          message(AUTHOR_WARNING "CPackRPM:Warning: ${_RPM_SPEC_HEADER} not "
+              "supported in provided rpmbuild. Tag will not be used.")
+          continue()
+        endif()
+      cmake_policy(POP)
+
+      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)
+  # May be used to embed a post (un)installation script in the spec file.
+  # The refered script file(s) will be read and directly
+  # put after the %post or %postun 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)
+  # May be used to embed a pre (un)installation script in the spec file.
+  # The refered script file(s) will be read and directly
+  # put after the %pre or %preun section
+  foreach(RPM_SCRIPT_FILE_TYPE_ "INSTALL" "UNINSTALL")
+    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 refered 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}")
+  message(STATUS "CPackRPM:Debug: Using CPACK_RPM_ROOTDIR=${CPACK_RPM_ROOTDIR}")
+  # 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 unecessary 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()
+
+          cmake_policy(PUSH)
+            cmake_policy(SET CMP0009 NEW)
+            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_}/*")
+          cmake_policy(POP)
+
+          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)
+      cmake_policy(PUSH)
+        cmake_policy(SET CMP0010 NEW)
+        if(NOT CPACK_RPM_FILE_NAME MATCHES ".*\\.rpm")
+      cmake_policy(POP)
+          message(FATAL_ERROR "'${CPACK_RPM_FILE_NAME}' is not a valid RPM package file name as it must end with '.rpm'!")
+        endif()
+      cmake_policy(POP)
+    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 controll 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 ${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\@
+
+%postun
+\@CPACK_RPM_SPEC_POSTUNINSTALL\@
+
+%pre
+\@CPACK_RPM_SPEC_PREINSTALL\@
+
+%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
+    cmake_policy(PUSH)
+      # Tell file(GLOB_RECURSE) not to follow directory symlinks
+      # even if the project does not set this policy to NEW.
+      cmake_policy(SET CMP0009 NEW)
+      file(GLOB_RECURSE GENERATED_FILES "${CPACK_RPM_DIRECTORY}/RPMS/*.rpm"
+        "${CPACK_RPM_DIRECTORY}/SRPMS/*.rpm")
+    cmake_policy(POP)
+
+    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()
diff --git a/share/cmake-3.10/Modules/CPackWIX.cmake b/share/cmake-3.10/Modules/CPackWIX.cmake
new file mode 100644
index 0000000..1dc37d4
--- /dev/null
+++ b/share/cmake-3.10/Modules/CPackWIX.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:
+# CPackWIX
+# --------
+#
+# 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
+#
+# .. 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\<package>``
+#  The value for ``<package>`` 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 therefor 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.
+#
+
+if(NOT CPACK_WIX_ROOT)
+  file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT)
+endif()
+
+find_program(CPACK_WIX_CANDLE_EXECUTABLE candle
+  PATHS "${CPACK_WIX_ROOT}" PATH_SUFFIXES "bin")
+
+if(NOT CPACK_WIX_CANDLE_EXECUTABLE)
+  message(FATAL_ERROR "Could not find the WiX candle executable.")
+endif()
+
+find_program(CPACK_WIX_LIGHT_EXECUTABLE light
+  PATHS "${CPACK_WIX_ROOT}" PATH_SUFFIXES "bin")
+
+if(NOT CPACK_WIX_LIGHT_EXECUTABLE)
+  message(FATAL_ERROR "Could not find the WiX light executable.")
+endif()
diff --git a/share/cmake-3.10/Modules/CPackZIP.cmake b/share/cmake-3.10/Modules/CPackZIP.cmake
new file mode 100644
index 0000000..376520c
--- /dev/null
+++ b/share/cmake-3.10/Modules/CPackZIP.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(CMAKE_BINARY_DIR)
+  message(FATAL_ERROR "CPackZIP.cmake may only be used by CPack internally.")
+endif()
+
+find_program(ZIP_EXECUTABLE wzzip PATHS "$ENV{ProgramFiles}/WinZip")
+if(ZIP_EXECUTABLE)
+  set(CPACK_ZIP_COMMAND "\"${ZIP_EXECUTABLE}\" -P \"<ARCHIVE>\" @<FILELIST>")
+  set(CPACK_ZIP_NEED_QUOTES TRUE)
+endif()
+
+if(NOT ZIP_EXECUTABLE)
+  find_program(ZIP_EXECUTABLE 7z PATHS "$ENV{ProgramFiles}/7-Zip")
+  if(ZIP_EXECUTABLE)
+    set(CPACK_ZIP_COMMAND "\"${ZIP_EXECUTABLE}\" a -tzip \"<ARCHIVE>\" @<FILELIST>")
+  set(CPACK_ZIP_NEED_QUOTES TRUE)
+  endif()
+endif()
+
+if(NOT ZIP_EXECUTABLE)
+  find_package(Cygwin)
+  find_program(ZIP_EXECUTABLE zip PATHS "${CYGWIN_INSTALL_PATH}/bin")
+  if(ZIP_EXECUTABLE)
+    set(CPACK_ZIP_COMMAND "\"${ZIP_EXECUTABLE}\" -r \"<ARCHIVE>\" . -i@<FILELIST>")
+    set(CPACK_ZIP_NEED_QUOTES FALSE)
+  endif()
+endif()
+
diff --git a/share/cmake-3.10/Modules/CSharpUtilities.cmake b/share/cmake-3.10/Modules/CSharpUtilities.cmake
new file mode 100644
index 0000000..e9e1510
--- /dev/null
+++ b/share/cmake-3.10/Modules/CSharpUtilities.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:
+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.
+
+#]=======================================================================]
+
+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()
diff --git a/share/cmake-3.10/Modules/CTest.cmake b/share/cmake-3.10/Modules/CTest.cmake
new file mode 100644
index 0000000..9370596
--- /dev/null
+++ b/share/cmake-3.10/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_PROJECT_NAME "MyProject")
+  set(CTEST_NIGHTLY_START_TIME "01:00:00 UTC")
+  set(CTEST_DROP_METHOD "http")
+  set(CTEST_DROP_SITE "my.cdash.org")
+  set(CTEST_DROP_LOCATION "/submit.php?project=MyProject")
+  set(CTEST_DROP_SITE_CDASH TRUE)
+
+(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 vs8 vs9
+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 auxilary 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(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")
+
+  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
+    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(SCPCOMMAND scp DOC
+    "Path to scp command, used by CTest for submitting results to a Dart server"
+    )
+  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
+    BZR_UPDATE_OPTIONS
+    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
+    PURIFYCOMMAND
+    SCPCOMMAND
+    SLURM_SBATCH_COMMAND
+    SLURM_SRUN_COMMAND
+    SITE
+    SVNCOMMAND
+    SVN_UPDATE_OPTIONS
+    )
+  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.10/Modules/CTestCoverageCollectGCOV.cmake b/share/cmake-3.10/Modules/CTestCoverageCollectGCOV.cmake
new file mode 100644
index 0000000..1203be4
--- /dev/null
+++ b/share/cmake-3.10/Modules/CTestCoverageCollectGCOV.cmake
@@ -0,0 +1,290 @@
+# 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:: cdash_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.
+#
+#   ``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``.
+#
+#   ``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)
+  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()
+  # run gcov on each gcda file in the binary tree
+  set(gcda_files)
+  set(label_files)
+  if (GCOV_GLOB)
+      file(GLOB_RECURSE gfiles RELATIVE ${binary_dir} "${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 RELATIVE ${binary_dir} "${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}")
+  # call gcov on each .gcda file
+  foreach (gcda_file ${gcda_files})
+    # get the directory of the gcda file
+    get_filename_component(gcda_file ${binary_dir}/${gcda_file} ABSOLUTE)
+    get_filename_component(gcov_dir ${gcda_file} DIRECTORY)
+    # run gcov, this will produce the .gcov file in the current
+    # working directory
+    if(NOT DEFINED GCOV_GCOV_OPTIONS)
+      set(GCOV_GCOV_OPTIONS -b)
+    endif()
+    execute_process(COMMAND
+      ${gcov_command} ${GCOV_GCOV_OPTIONS} -o ${gcov_dir} ${gcda_file}
+      OUTPUT_VARIABLE out
+      RESULT_VARIABLE res
+      WORKING_DIRECTORY ${coverage_dir})
+
+    if (GCOV_DELETE)
+      file(REMOVE ${gcda_file})
+    endif()
+
+  endforeach()
+  if(NOT "${res}" EQUAL 0)
+    if (NOT GCOV_QUIET)
+      message(STATUS "Error running gcov: ${res} ${out}")
+    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}
+")
+
+  if (GCOV_QUIET)
+    set(tar_opts "cfj")
+  else()
+    set(tar_opts "cvfj")
+  endif()
+
+  execute_process(COMMAND
+    ${CMAKE_COMMAND} -E tar ${tar_opts} ${GCOV_TARBALL}
+    "--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.10/Modules/CTestScriptMode.cmake b/share/cmake-3.10/Modules/CTestScriptMode.cmake
new file mode 100644
index 0000000..5be78d5
--- /dev/null
+++ b/share/cmake-3.10/Modules/CTestScriptMode.cmake
@@ -0,0 +1,19 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#.rst:
+# CTestScriptMode
+# ---------------
+#
+#
+#
+# This file is read by ctest in script mode (-S)
+
+# Determine the current system, so this information can be used
+# in ctest scripts
+include(CMakeDetermineSystem)
+
+# 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)
+
diff --git a/share/cmake-3.10/Modules/CTestTargets.cmake b/share/cmake-3.10/Modules/CTestTargets.cmake
new file mode 100644
index 0000000..ff9aada
--- /dev/null
+++ b/share/cmake-3.10/Modules/CTestTargets.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.
+
+
+if(NOT RUN_FROM_CTEST_OR_DART)
+  message(FATAL_ERROR "Do not incldue CTestTargets.cmake directly")
+endif()
+
+if(NOT PROJECT_BINARY_DIR)
+  message(FATAL_ERROR "Do not include(CTest) before calling project().")
+endif()
+
+# make directories in the binary tree
+file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/Testing/Temporary)
+get_filename_component(CMAKE_HOST_PATH ${CMAKE_COMMAND} PATH)
+set(CMAKE_TARGET_PATH ${EXECUTABLE_OUTPUT_PATH})
+find_program(CMAKE_CTEST_COMMAND ctest ${CMAKE_HOST_PATH} ${CMAKE_TARGET_PATH})
+mark_as_advanced(CMAKE_CTEST_COMMAND)
+
+# Use CTest
+# configure files
+
+if(CTEST_NEW_FORMAT)
+  configure_file(
+    ${CMAKE_ROOT}/Modules/DartConfiguration.tcl.in
+    ${PROJECT_BINARY_DIR}/CTestConfiguration.ini )
+else()
+  configure_file(
+    ${CMAKE_ROOT}/Modules/DartConfiguration.tcl.in
+    ${PROJECT_BINARY_DIR}/DartConfiguration.tcl )
+endif()
+
+#
+# Section 3:
+#
+# Custom targets to perform dashboard builds and submissions.
+# These should NOT need to be modified from project to project.
+#
+
+set(__conf_types "")
+if(CMAKE_CONFIGURATION_TYPES)
+  # We need to pass the configuration type on the test command line.
+  set(__conf_types -C "${CMAKE_CFG_INTDIR}")
+endif()
+
+# Add convenience targets.  Do this at most once in case of nested
+# projects.
+define_property(GLOBAL PROPERTY CTEST_TARGETS_ADDED
+  BRIEF_DOCS "Internal property used by CTestTargets module."
+  FULL_DOCS "Set by the CTestTargets module to track addition of testing targets."
+  )
+get_property(_CTEST_TARGETS_ADDED GLOBAL PROPERTY CTEST_TARGETS_ADDED)
+if(NOT _CTEST_TARGETS_ADDED)
+  set_property(GLOBAL PROPERTY CTEST_TARGETS_ADDED 1)
+
+  # For all generators add basic testing targets.
+  foreach(mode Experimental Nightly Continuous NightlyMemoryCheck)
+    add_custom_target(${mode}
+      ${CMAKE_CTEST_COMMAND} ${__conf_types} -D ${mode}
+      USES_TERMINAL
+      )
+    set_property(TARGET ${mode} PROPERTY RULE_LAUNCH_CUSTOM "")
+    set_property(TARGET ${mode} PROPERTY FOLDER "CTestDashboardTargets")
+  endforeach()
+
+  # For Makefile generators add more granular targets.
+  if("${CMAKE_GENERATOR}" MATCHES "(Ninja|Make)")
+    # Make targets for Experimental builds
+    foreach(mode Nightly Experimental Continuous)
+      foreach(testtype
+          Start Update Configure Build Test Coverage MemCheck Submit
+          # missing purify
+          )
+        add_custom_target(${mode}${testtype}
+          ${CMAKE_CTEST_COMMAND} ${__conf_types} -D ${mode}${testtype}
+          USES_TERMINAL
+          )
+        set_property(TARGET ${mode}${testtype} PROPERTY RULE_LAUNCH_CUSTOM "")
+        set_property(TARGET ${mode}${testtype} PROPERTY FOLDER "CTestDashboardTargets")
+      endforeach()
+    endforeach()
+  endif()
+
+  # If requested, add an alias that is the equivalent of the built-in "test"
+  # or "RUN_TESTS" target:
+  if(CTEST_TEST_TARGET_ALIAS)
+    add_custom_target(${CTEST_TEST_TARGET_ALIAS}
+      ${CMAKE_CTEST_COMMAND} ${__conf_types}
+      USES_TERMINAL
+      )
+  endif()
+endif()
diff --git a/share/cmake-3.10/Modules/CTestUseLaunchers.cmake b/share/cmake-3.10/Modules/CTestUseLaunchers.cmake
new file mode 100644
index 0000000..dc90513
--- /dev/null
+++ b/share/cmake-3.10/Modules/CTestUseLaunchers.cmake
@@ -0,0 +1,69 @@
+# 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.10/Modules/CheckCCompilerFlag.cmake b/share/cmake-3.10/Modules/CheckCCompilerFlag.cmake
new file mode 100644
index 0000000..5a7298b
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckCCompilerFlag.cmake
@@ -0,0 +1,62 @@
+# 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
+
+  ::
+
+    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(CheckCSourceCompiles)
+include(CMakeCheckCompilerFlagCommonPatterns)
+
+macro (CHECK_C_COMPILER_FLAG _FLAG _RESULT)
+   set(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}")
+   set(CMAKE_REQUIRED_DEFINITIONS "${_FLAG}")
+
+   # Normalize locale during test compilation.
+   set(_CheckCCompilerFlag_LOCALE_VARS LC_ALL LC_MESSAGES LANG)
+   foreach(v ${_CheckCCompilerFlag_LOCALE_VARS})
+     set(_CheckCCompilerFlag_SAVED_${v} "$ENV{${v}}")
+     set(ENV{${v}} C)
+   endforeach()
+   CHECK_COMPILER_FLAG_COMMON_PATTERNS(_CheckCCompilerFlag_COMMON_PATTERNS)
+   CHECK_C_SOURCE_COMPILES("int 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 C" # GNU
+     ${_CheckCCompilerFlag_COMMON_PATTERNS}
+     )
+   foreach(v ${_CheckCCompilerFlag_LOCALE_VARS})
+     set(ENV{${v}} ${_CheckCCompilerFlag_SAVED_${v}})
+     unset(_CheckCCompilerFlag_SAVED_${v})
+   endforeach()
+   unset(_CheckCCompilerFlag_LOCALE_VARS)
+   unset(_CheckCCompilerFlag_COMMON_PATTERNS)
+
+   set (CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}")
+endmacro ()
diff --git a/share/cmake-3.10/Modules/CheckCSourceCompiles.cmake b/share/cmake-3.10/Modules/CheckCSourceCompiles.cmake
new file mode 100644
index 0000000..56e68d5
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckCSourceCompiles.cmake
@@ -0,0 +1,133 @@
+# 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
+
+  ::
+
+    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_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.
+
+#]=======================================================================]
+
+
+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_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(STATUS "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_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(STATUS "Performing Test ${VAR} - 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(STATUS "Performing Test ${VAR} - 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.10/Modules/CheckCSourceRuns.cmake b/share/cmake-3.10/Modules/CheckCSourceRuns.cmake
new file mode 100644
index 0000000..8da9f1e
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckCSourceRuns.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:
+CheckCSourceRuns
+----------------
+
+Check if given C source compiles and links into an executable and can
+subsequently be run.
+
+.. command:: check_c_source_runs
+
+  ::
+
+    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_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.
+
+#]=======================================================================]
+
+macro(CHECK_C_SOURCE_RUNS SOURCE VAR)
+  if(NOT DEFINED "${VAR}")
+    set(MACRO_CHECK_FUNCTION_DEFINITIONS
+      "-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
+    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(STATUS "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_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)
+    # 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(STATUS "Performing Test ${VAR} - 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"
+        "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(STATUS "Performing Test ${VAR} - 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"
+        "Return value: ${${VAR}_EXITCODE}\n"
+        "Source file was:\n${SOURCE}\n")
+
+    endif()
+  endif()
+endmacro()
+
diff --git a/share/cmake-3.10/Modules/CheckCXXCompilerFlag.cmake b/share/cmake-3.10/Modules/CheckCXXCompilerFlag.cmake
new file mode 100644
index 0000000..f731b70
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckCXXCompilerFlag.cmake
@@ -0,0 +1,63 @@
+# 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
+
+  ::
+
+    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(CheckCXXSourceCompiles)
+include(CMakeCheckCompilerFlagCommonPatterns)
+
+macro (CHECK_CXX_COMPILER_FLAG _FLAG _RESULT)
+   set(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}")
+   set(CMAKE_REQUIRED_DEFINITIONS "${_FLAG}")
+
+   # Normalize locale during test compilation.
+   set(_CheckCXXCompilerFlag_LOCALE_VARS LC_ALL LC_MESSAGES LANG)
+   foreach(v ${_CheckCXXCompilerFlag_LOCALE_VARS})
+     set(_CheckCXXCompilerFlag_SAVED_${v} "$ENV{${v}}")
+     set(ENV{${v}} C)
+   endforeach()
+   CHECK_COMPILER_FLAG_COMMON_PATTERNS(_CheckCXXCompilerFlag_COMMON_PATTERNS)
+   CHECK_CXX_SOURCE_COMPILES("int main() { return 0; }" ${_RESULT}
+     # Some compilers do not fail with a bad flag
+     FAIL_REGEX "command line option .* is valid for .* but not for C\\\\+\\\\+" # GNU
+     ${_CheckCXXCompilerFlag_COMMON_PATTERNS}
+     )
+   foreach(v ${_CheckCXXCompilerFlag_LOCALE_VARS})
+     set(ENV{${v}} ${_CheckCXXCompilerFlag_SAVED_${v}})
+     unset(_CheckCXXCompilerFlag_SAVED_${v})
+   endforeach()
+   unset(_CheckCXXCompilerFlag_LOCALE_VARS)
+   unset(_CheckCXXCompilerFlag_COMMON_PATTERNS)
+
+   set (CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}")
+endmacro ()
+
diff --git a/share/cmake-3.10/Modules/CheckCXXSourceCompiles.cmake b/share/cmake-3.10/Modules/CheckCXXSourceCompiles.cmake
new file mode 100644
index 0000000..4634a7b
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckCXXSourceCompiles.cmake
@@ -0,0 +1,133 @@
+# 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
+
+  ::
+
+    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_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.
+
+#]=======================================================================]
+
+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_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(STATUS "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_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(STATUS "Performing Test ${VAR} - 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(STATUS "Performing Test ${VAR} - 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.10/Modules/CheckCXXSourceRuns.cmake b/share/cmake-3.10/Modules/CheckCXXSourceRuns.cmake
new file mode 100644
index 0000000..558708c
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckCXXSourceRuns.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:
+CheckCXXSourceRuns
+------------------
+
+Check if given C++ source compiles and links into an executable and can
+subsequently be run.
+
+.. command:: check_cxx_source_runs
+
+  ::
+
+    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_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.
+
+#]=======================================================================]
+
+macro(CHECK_CXX_SOURCE_RUNS SOURCE VAR)
+  if(NOT DEFINED "${VAR}")
+    set(MACRO_CHECK_FUNCTION_DEFINITIONS
+      "-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
+    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(STATUS "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_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)
+
+    # 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(STATUS "Performing Test ${VAR} - 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"
+        "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(STATUS "Performing Test ${VAR} - 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"
+        "Return value: ${${VAR}_EXITCODE}\n"
+        "Source file was:\n${SOURCE}\n")
+    endif()
+  endif()
+endmacro()
+
diff --git a/share/cmake-3.10/Modules/CheckCXXSymbolExists.cmake b/share/cmake-3.10/Modules/CheckCXXSymbolExists.cmake
new file mode 100644
index 0000000..8552154
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckCXXSymbolExists.cmake
@@ -0,0 +1,39 @@
+# 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++
+#
+# 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 in C++ files, as
+# opposed to CHECK_SYMBOL_EXISTS(), which works only for C.
+#
+# 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 or enum value it will not be
+# recognized (consider using CheckTypeSize or CheckCSourceCompiles).
+#
+# 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_LIBRARIES = list of libraries to link
+#   CMAKE_REQUIRED_QUIET = execute quietly without messages
+
+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.10/Modules/CheckForPthreads.c b/share/cmake-3.10/Modules/CheckForPthreads.c
new file mode 100644
index 0000000..e70ceb1
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckForPthreads.c
@@ -0,0 +1,15 @@
+#include <pthread.h>
+
+void* start_routine(void* args)
+{
+  return args;
+}
+
+int main(void)
+{
+  /* This is a compile and link test, no code to actually run things. */
+  pthread_t thread;
+  pthread_create(&thread, 0, start_routine, 0);
+  pthread_join(thread, 0);
+  return 0;
+}
diff --git a/share/cmake-3.10/Modules/CheckFortranCompilerFlag.cmake b/share/cmake-3.10/Modules/CheckFortranCompilerFlag.cmake
new file mode 100644
index 0000000..8a1a8b9
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckFortranCompilerFlag.cmake
@@ -0,0 +1,62 @@
+# 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
+
+  ::
+
+    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(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.10/Modules/CheckFortranFunctionExists.cmake b/share/cmake-3.10/Modules/CheckFortranFunctionExists.cmake
new file mode 100644
index 0000000..5fc740a
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckFortranFunctionExists.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.
+
+#.rst:
+# CheckFortranFunctionExists
+# --------------------------
+#
+# macro which checks if the Fortran function exists
+#
+# CHECK_FORTRAN_FUNCTION_EXISTS(FUNCTION VARIABLE)
+#
+# ::
+#
+#   FUNCTION - the name of the Fortran function
+#   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_LIBRARIES = list of libraries to link
+
+macro(CHECK_FORTRAN_FUNCTION_EXISTS FUNCTION VARIABLE)
+  if(NOT DEFINED ${VARIABLE})
+    message(STATUS "Looking for Fortran ${FUNCTION}")
+    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_LIBRARIES}
+    OUTPUT_VARIABLE OUTPUT
+    )
+#    message(STATUS "${OUTPUT}")
+    if(${VARIABLE})
+      set(${VARIABLE} 1 CACHE INTERNAL "Have Fortran function ${FUNCTION}")
+      message(STATUS "Looking for Fortran ${FUNCTION} - 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(STATUS "Looking for Fortran ${FUNCTION} - 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.10/Modules/CheckFortranSourceCompiles.cmake b/share/cmake-3.10/Modules/CheckFortranSourceCompiles.cmake
new file mode 100644
index 0000000..4df17e3
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckFortranSourceCompiles.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:
+CheckFortranSourceCompiles
+--------------------------
+
+Check if given Fortran source compiles and links into an executable.
+
+.. command:: check_fortran_source_compiles
+
+  ::
+
+    check_fortran_source_compiles(code resultVar
+        [FAIL_REGEX regex1 [regex2...]]
+        [SRC_EXT ext]
+    )
+
+  Check that the source supplied in ``code`` can be compiled as a Fortran
+  source file and linked as an executable (so it must contain at least a
+  ``PROGRAM`` entry point). 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 ``.F`` file extension. The
+  ``SRC_EXT`` option can be used to override this with ``.ext`` 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_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_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.
+
+#]=======================================================================]
+
+
+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()
+    set(MACRO_CHECK_FUNCTION_DEFINITIONS
+      "-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
+    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(STATUS "Performing Test ${VAR}")
+    endif()
+    try_compile(${VAR}
+      ${CMAKE_BINARY_DIR}
+      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.${_SRC_EXT}
+      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
+      ${CHECK_Fortran_SOURCE_COMPILES_ADD_LIBRARIES}
+      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
+      "${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(STATUS "Performing Test ${VAR} - 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(STATUS "Performing Test ${VAR} - 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.10/Modules/CheckFunctionExists.c b/share/cmake-3.10/Modules/CheckFunctionExists.c
new file mode 100644
index 0000000..224e340
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckFunctionExists.c
@@ -0,0 +1,28 @@
+#ifdef CHECK_FUNCTION_EXISTS
+
+#ifdef __cplusplus
+extern "C"
+#endif
+  char
+  CHECK_FUNCTION_EXISTS(void);
+#ifdef __CLASSIC_C__
+int main()
+{
+  int ac;
+  char* av[];
+#else
+int main(int ac, char* av[])
+{
+#endif
+  CHECK_FUNCTION_EXISTS();
+  if (ac > 1000) {
+    return *av[0];
+  }
+  return 0;
+}
+
+#else /* CHECK_FUNCTION_EXISTS */
+
+#error "CHECK_FUNCTION_EXISTS has to specify the function"
+
+#endif /* CHECK_FUNCTION_EXISTS */
diff --git a/share/cmake-3.10/Modules/CheckFunctionExists.cmake b/share/cmake-3.10/Modules/CheckFunctionExists.cmake
new file mode 100644
index 0000000..ef08062
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckFunctionExists.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:
+# CheckFunctionExists
+# -------------------
+#
+# Check if a C function can be linked::
+#
+#   check_function_exists(<function> <variable>)
+#
+# Check that the ``<function>`` is provided by libraries on the system and store
+# the result in a ``<variable>``. ``<variable>`` 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_INCLUDES = list of include directories
+#   CMAKE_REQUIRED_LIBRARIES = list of libraries to link
+#   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.
+
+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(STATUS "Looking for ${FUNCTION}")
+    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_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(STATUS "Looking for ${FUNCTION} - 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(STATUS "Looking for ${FUNCTION} - 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.10/Modules/CheckIPOSupported.cmake b/share/cmake-3.10/Modules/CheckIPOSupported.cmake
new file mode 100644
index 0000000..e04ab1c
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckIPOSupported.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:
+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`` and ``CXX`` 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()
+
+#]=======================================================================]
+
+include(CMakeParseArguments) # cmake_parse_arguments
+
+# X_RESULT - name of the final result variable
+# X_OUTPUT - name of the variable with information about error
+macro(_ipo_not_supported output)
+  string(COMPARE EQUAL "${X_RESULT}" "" is_empty)
+  if(is_empty)
+    message(FATAL_ERROR "IPO is not supported (${output}).")
+  endif()
+
+  set("${X_RESULT}" NO PARENT_SCOPE)
+  set("${X_OUTPUT}" "${output}" PARENT_SCOPE)
+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(
+      result
+      "${bindir}"
+      "${srcdir}"
+      "${TRY_COMPILE_PROJECT_NAME}"
+      CMAKE_FLAGS
+      "-DCMAKE_VERBOSE_MAKEFILE=ON"
+      "-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON"
+      OUTPUT_VARIABLE output
+  )
+
+  if(NOT result)
+    _ipo_not_supported("${output}")
+    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 ")
+    _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.10/Modules/CheckIPOSupported/CMakeLists-C.txt.in b/share/cmake-3.10/Modules/CheckIPOSupported/CMakeLists-C.txt.in
new file mode 100644
index 0000000..5a3b8ee
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckIPOSupported/CMakeLists-C.txt.in
@@ -0,0 +1,8 @@
+cmake_minimum_required(VERSION "@CMAKE_VERSION@")
+project("@TRY_COMPILE_PROJECT_NAME@" LANGUAGES C)
+
+cmake_policy(SET CMP0069 NEW)
+
+add_library(foo foo.c)
+add_executable(boo main.c)
+target_link_libraries(boo PUBLIC foo)
diff --git a/share/cmake-3.10/Modules/CheckIPOSupported/CMakeLists-CXX.txt.in b/share/cmake-3.10/Modules/CheckIPOSupported/CMakeLists-CXX.txt.in
new file mode 100644
index 0000000..30993fa
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckIPOSupported/CMakeLists-CXX.txt.in
@@ -0,0 +1,8 @@
+cmake_minimum_required(VERSION "@CMAKE_VERSION@")
+project("@TRY_COMPILE_PROJECT_NAME@" LANGUAGES CXX)
+
+cmake_policy(SET CMP0069 NEW)
+
+add_library(foo foo.cpp)
+add_executable(boo main.cpp)
+target_link_libraries(boo PUBLIC foo)
diff --git a/share/cmake-3.10/Modules/CheckIPOSupported/CMakeLists-Fortran.txt.in b/share/cmake-3.10/Modules/CheckIPOSupported/CMakeLists-Fortran.txt.in
new file mode 100644
index 0000000..9fab077
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckIPOSupported/CMakeLists-Fortran.txt.in
@@ -0,0 +1,8 @@
+cmake_minimum_required(VERSION "@CMAKE_VERSION@")
+project("@TRY_COMPILE_PROJECT_NAME@" LANGUAGES Fortran)
+
+cmake_policy(SET CMP0069 NEW)
+
+add_library(foo foo.f)
+add_executable(boo main.f)
+target_link_libraries(boo PUBLIC foo)
diff --git a/share/cmake-3.10/Modules/CheckIPOSupported/foo.c b/share/cmake-3.10/Modules/CheckIPOSupported/foo.c
new file mode 100644
index 0000000..1e56597
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckIPOSupported/foo.c
@@ -0,0 +1,4 @@
+int foo()
+{
+  return 0x42;
+}
diff --git a/share/cmake-3.10/Modules/CheckIPOSupported/foo.cpp b/share/cmake-3.10/Modules/CheckIPOSupported/foo.cpp
new file mode 100644
index 0000000..1e56597
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckIPOSupported/foo.cpp
@@ -0,0 +1,4 @@
+int foo()
+{
+  return 0x42;
+}
diff --git a/share/cmake-3.10/Modules/CheckIPOSupported/foo.f b/share/cmake-3.10/Modules/CheckIPOSupported/foo.f
new file mode 100644
index 0000000..945d2d5
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckIPOSupported/foo.f
@@ -0,0 +1,2 @@
+	SUBROUTINE FOO
+	END
diff --git a/share/cmake-3.10/Modules/CheckIPOSupported/main.c b/share/cmake-3.10/Modules/CheckIPOSupported/main.c
new file mode 100644
index 0000000..5be0864
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckIPOSupported/main.c
@@ -0,0 +1,6 @@
+int foo();
+
+int main()
+{
+  return foo();
+}
diff --git a/share/cmake-3.10/Modules/CheckIPOSupported/main.cpp b/share/cmake-3.10/Modules/CheckIPOSupported/main.cpp
new file mode 100644
index 0000000..5be0864
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckIPOSupported/main.cpp
@@ -0,0 +1,6 @@
+int foo();
+
+int main()
+{
+  return foo();
+}
diff --git a/share/cmake-3.10/Modules/CheckIPOSupported/main.f b/share/cmake-3.10/Modules/CheckIPOSupported/main.f
new file mode 100644
index 0000000..9d1de9f
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckIPOSupported/main.f
@@ -0,0 +1,3 @@
+	PROGRAM BOO
+	CALL FOO()
+	END
diff --git a/share/cmake-3.6/Modules/CheckIncludeFile.c.in b/share/cmake-3.10/Modules/CheckIncludeFile.c.in
similarity index 100%
rename from share/cmake-3.6/Modules/CheckIncludeFile.c.in
rename to share/cmake-3.10/Modules/CheckIncludeFile.c.in
diff --git a/share/cmake-3.10/Modules/CheckIncludeFile.cmake b/share/cmake-3.10/Modules/CheckIncludeFile.cmake
new file mode 100644
index 0000000..c566e14
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckIncludeFile.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:
+# CheckIncludeFile
+# ----------------
+#
+# Provides a macro to check if a header file can be included in ``C``.
+#
+# .. command:: CHECK_INCLUDE_FILE
+#
+#   ::
+#
+#     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``
+#   list of macros to define (-DFOO=bar)
+# ``CMAKE_REQUIRED_INCLUDES``
+#   list of include directories
+# ``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.
+
+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(STATUS "Looking for ${INCLUDE}")
+    endif()
+    if(${ARGC} EQUAL 3)
+      set(CMAKE_C_FLAGS_SAVE ${CMAKE_C_FLAGS})
+      string(APPEND CMAKE_C_FLAGS " ${ARGV2}")
+    endif()
+
+    try_compile(${VARIABLE}
+      ${CMAKE_BINARY_DIR}
+      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.c
+      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
+      CMAKE_FLAGS
+      -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_INCLUDE_FILE_FLAGS}
+      "${CHECK_INCLUDE_FILE_C_INCLUDE_DIRS}"
+      OUTPUT_VARIABLE OUTPUT)
+
+    if(${ARGC} EQUAL 3)
+      set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS_SAVE})
+    endif()
+
+    if(${VARIABLE})
+      if(NOT CMAKE_REQUIRED_QUIET)
+        message(STATUS "Looking for ${INCLUDE} - 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(STATUS "Looking for ${INCLUDE} - 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.6/Modules/CheckIncludeFile.cxx.in b/share/cmake-3.10/Modules/CheckIncludeFile.cxx.in
similarity index 100%
rename from share/cmake-3.6/Modules/CheckIncludeFile.cxx.in
rename to share/cmake-3.10/Modules/CheckIncludeFile.cxx.in
diff --git a/share/cmake-3.10/Modules/CheckIncludeFileCXX.cmake b/share/cmake-3.10/Modules/CheckIncludeFileCXX.cmake
new file mode 100644
index 0000000..19b1ef6
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckIncludeFileCXX.cmake
@@ -0,0 +1,88 @@
+# 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
+#
+#   ::
+#
+#     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``
+#   list of macros to define (-DFOO=bar)
+# ``CMAKE_REQUIRED_INCLUDES``
+#   list of include directories
+# ``CMAKE_REQUIRED_QUIET``
+#   execute quietly without messages
+#
+# See modules :module:`CheckIncludeFile` and :module:`CheckIncludeFiles`
+# to check for one or more ``C`` headers.
+
+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(STATUS "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()
+
+    try_compile(${VARIABLE}
+      ${CMAKE_BINARY_DIR}
+      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.cxx
+      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
+      CMAKE_FLAGS
+      -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_INCLUDE_FILE_FLAGS}
+      "${CHECK_INCLUDE_FILE_CXX_INCLUDE_DIRS}"
+      OUTPUT_VARIABLE OUTPUT)
+
+    if(${ARGC} EQUAL 3)
+      set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS_SAVE})
+    endif()
+
+    if(${VARIABLE})
+      if(NOT CMAKE_REQUIRED_QUIET)
+        message(STATUS "Looking for C++ include ${INCLUDE} - 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(STATUS "Looking for C++ include ${INCLUDE} - 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.10/Modules/CheckIncludeFiles.cmake b/share/cmake-3.10/Modules/CheckIncludeFiles.cmake
new file mode 100644
index 0000000..bef11a5
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckIncludeFiles.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.
+
+#.rst:
+# CheckIncludeFiles
+# -----------------
+#
+# Provides a macro to check if a list of one or more header files can
+# be included together in ``C``.
+#
+# .. command:: CHECK_INCLUDE_FILES
+#
+#   ::
+#
+#     CHECK_INCLUDE_FILES("<includes>" <variable>)
+#
+#   Check if the given ``<includes>`` list may be included together
+#   in a ``C`` 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.
+#
+# 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_QUIET``
+#   execute quietly without messages
+#
+# See modules :module:`CheckIncludeFile` and :module:`CheckIncludeFileCXX`
+# to check for a single header file in ``C`` or ``CXX`` languages.
+
+macro(CHECK_INCLUDE_FILES INCLUDE VARIABLE)
+  if(NOT DEFINED "${VARIABLE}")
+    set(CMAKE_CONFIGURABLE_FILE_CONTENT "/* */\n")
+    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"
+      "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFiles.c" @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()
+
+    if(NOT CMAKE_REQUIRED_QUIET)
+      message(STATUS "Looking for ${_description}")
+    endif()
+    try_compile(${VARIABLE}
+      ${CMAKE_BINARY_DIR}
+      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFiles.c
+      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
+      CMAKE_FLAGS
+      -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_INCLUDE_FILES_FLAGS}
+      "${CHECK_INCLUDE_FILES_INCLUDE_DIRS}"
+      OUTPUT_VARIABLE OUTPUT)
+    if(${VARIABLE})
+      if(NOT CMAKE_REQUIRED_QUIET)
+        message(STATUS "Looking for ${_description} - 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(STATUS "Looking for ${_description} - 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.10/Modules/CheckLanguage.cmake b/share/cmake-3.10/Modules/CheckLanguage.cmake
new file mode 100644
index 0000000..1ea91d2
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckLanguage.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.
+
+#.rst:
+# CheckLanguage
+# -------------
+#
+# Check if a language can be enabled
+#
+# Usage:
+#
+# ::
+#
+#   check_language(<lang>)
+#
+# where <lang> is a language that may be passed to enable_language()
+# such as "Fortran".  If 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 CMAKE_<lang>_COMPILER as the
+# compiler that was found, or NOTFOUND if the language cannot be
+# enabled.
+#
+# Example:
+#
+# ::
+#
+#   check_language(Fortran)
+#   if(CMAKE_Fortran_COMPILER)
+#     enable_language(Fortran)
+#   else()
+#     message(STATUS "No Fortran support")
+#   endif()
+
+macro(check_language lang)
+  if(NOT DEFINED CMAKE_${lang}_COMPILER)
+    set(_desc "Looking for a ${lang} compiler")
+    message(STATUS ${_desc})
+    file(REMOVE_RECURSE ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Check${lang})
+    file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Check${lang}/CMakeLists.txt"
+      "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\"
+  )
+")
+    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}"
+      OUTPUT_VARIABLE output
+      ERROR_VARIABLE output
+      RESULT_VARIABLE result
+      )
+    include(${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Check${lang}/result.cmake OPTIONAL)
+    if(CMAKE_${lang}_COMPILER AND "${result}" STREQUAL "0")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "${_desc} passed with the following output:\n"
+        "${output}\n")
+    else()
+      set(CMAKE_${lang}_COMPILER NOTFOUND)
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "${_desc} failed with the following output:\n"
+        "${output}\n")
+    endif()
+    message(STATUS "${_desc} - ${CMAKE_${lang}_COMPILER}")
+    set(CMAKE_${lang}_COMPILER "${CMAKE_${lang}_COMPILER}" CACHE FILEPATH "${lang} compiler")
+    mark_as_advanced(CMAKE_${lang}_COMPILER)
+  endif()
+endmacro()
diff --git a/share/cmake-3.10/Modules/CheckLibraryExists.cmake b/share/cmake-3.10/Modules/CheckLibraryExists.cmake
new file mode 100644
index 0000000..528a450
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckLibraryExists.cmake
@@ -0,0 +1,85 @@
+# 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.
+#
+# 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_LIBRARIES = list of libraries to link
+#   CMAKE_REQUIRED_QUIET = execute quietly without messages
+
+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(STATUS "Looking for ${FUNCTION} in ${LIBRARY}")
+    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}
+      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(STATUS "Looking for ${FUNCTION} in ${LIBRARY} - 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(STATUS "Looking for ${FUNCTION} in ${LIBRARY} - 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.6/Modules/CheckLibraryExists.lists.in b/share/cmake-3.10/Modules/CheckLibraryExists.lists.in
similarity index 100%
rename from share/cmake-3.6/Modules/CheckLibraryExists.lists.in
rename to share/cmake-3.10/Modules/CheckLibraryExists.lists.in
diff --git a/share/cmake-3.6/Modules/CheckPrototypeDefinition.c.in b/share/cmake-3.10/Modules/CheckPrototypeDefinition.c.in
similarity index 100%
rename from share/cmake-3.6/Modules/CheckPrototypeDefinition.c.in
rename to share/cmake-3.10/Modules/CheckPrototypeDefinition.c.in
diff --git a/share/cmake-3.10/Modules/CheckPrototypeDefinition.cmake b/share/cmake-3.10/Modules/CheckPrototypeDefinition.cmake
new file mode 100644
index 0000000..7859594
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckPrototypeDefinition.cmake
@@ -0,0 +1,109 @@
+# 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 protoype we expect is correct.
+#
+# 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:
+#
+# ::
+#
+#   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 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_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)
+
+
+function(CHECK_PROTOTYPE_DEFINITION _FUNCTION _PROTOTYPE _RETURN _HEADER _VARIABLE)
+
+  if (NOT DEFINED ${_VARIABLE})
+    set(CHECK_PROTOTYPE_DEFINITION_CONTENT "/* */\n")
+
+    set(CHECK_PROTOTYPE_DEFINITION_FLAGS ${CMAKE_REQUIRED_FLAGS})
+    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_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(STATUS "Checking prototype ${_FUNCTION} for ${_VARIABLE} - 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(STATUS "Checking prototype ${_FUNCTION} for ${_VARIABLE} - 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.10/Modules/CheckSizeOf.cmake b/share/cmake-3.10/Modules/CheckSizeOf.cmake
new file mode 100644
index 0000000..bd439e1
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckSizeOf.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.
+
+
+message(SEND_ERROR
+        "Modules/CheckSizeOf.cmake has been removed.  "
+        "Use Modules/CheckTypeSize.cmake instead.  This "
+        "compatibility check may be removed before the next release!")
diff --git a/share/cmake-3.10/Modules/CheckStructHasMember.cmake b/share/cmake-3.10/Modules/CheckStructHasMember.cmake
new file mode 100644
index 0000000..085b464
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckStructHasMember.cmake
@@ -0,0 +1,74 @@
+# 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
+#
+# ::
+#
+#  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_LIBRARIES = list of libraries to link
+#   CMAKE_REQUIRED_QUIET = execute quietly without messages
+#
+#
+#
+# Example: CHECK_STRUCT_HAS_MEMBER("struct timeval" tv_sec sys/select.h
+# HAVE_TIMEVAL_TV_SEC LANGUAGE C)
+
+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.10/Modules/CheckSymbolExists.cmake b/share/cmake-3.10/Modules/CheckSymbolExists.cmake
new file mode 100644
index 0000000..6d52d56
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckSymbolExists.cmake
@@ -0,0 +1,116 @@
+# 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
+
+  ::
+
+    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``
+  list of macros to define (-DFOO=bar)
+``CMAKE_REQUIRED_INCLUDES``
+  list of include directories
+``CMAKE_REQUIRED_LIBRARIES``
+  list of libraries to link
+``CMAKE_REQUIRED_QUIET``
+  execute quietly without messages
+#]=======================================================================]
+
+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_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
+      "\nint main(int argc, char** argv)\n{\n  (void)argv;\n#ifndef ${SYMBOL}\n  return ((int*)(&${SYMBOL}))[argc];\n#else\n  (void)argc;\n  return 0;\n#endif\n}\n")
+
+    configure_file("${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in"
+      "${SOURCEFILE}" @ONLY)
+
+    if(NOT CMAKE_REQUIRED_QUIET)
+      message(STATUS "Looking for ${SYMBOL}")
+    endif()
+    try_compile(${VARIABLE}
+      ${CMAKE_BINARY_DIR}
+      "${SOURCEFILE}"
+      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
+      ${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(STATUS "Looking for ${SYMBOL} - 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(STATUS "Looking for ${SYMBOL} - 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()
+  endif()
+endmacro()
diff --git a/share/cmake-3.10/Modules/CheckTypeSize.c.in b/share/cmake-3.10/Modules/CheckTypeSize.c.in
new file mode 100644
index 0000000..2303c4e
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckTypeSize.c.in
@@ -0,0 +1,43 @@
+@headers@
+
+#undef KEY
+#if defined(__i386)
+# define KEY '_','_','i','3','8','6'
+#elif defined(__x86_64)
+# define KEY '_','_','x','8','6','_','6','4'
+#elif defined(__ppc__)
+# define KEY '_','_','p','p','c','_','_'
+#elif defined(__ppc64__)
+# define KEY '_','_','p','p','c','6','4','_','_'
+#elif defined(__aarch64__)
+# define KEY '_','_','a','a','r','c','h','6','4','_','_'
+#elif defined(__ARM_ARCH_7A__)
+# define KEY '_','_','A','R','M','_','A','R','C','H','_','7','A','_','_'
+#elif defined(__ARM_ARCH_7S__)
+# define KEY '_','_','A','R','M','_','A','R','C','H','_','7','S','_','_'
+#endif
+
+#define SIZE (sizeof(@type@))
+char info_size[] =  {'I', 'N', 'F', 'O', ':', 's','i','z','e','[',
+  ('0' + ((SIZE / 10000)%10)),
+  ('0' + ((SIZE / 1000)%10)),
+  ('0' + ((SIZE / 100)%10)),
+  ('0' + ((SIZE / 10)%10)),
+  ('0' +  (SIZE    % 10)),
+  ']',
+#ifdef KEY
+  ' ','k','e','y','[', KEY, ']',
+#endif
+  '\0'};
+
+#ifdef __CLASSIC_C__
+int main(argc, argv) int argc; char *argv[];
+#else
+int main(int argc, char *argv[])
+#endif
+{
+  int require = 0;
+  require += info_size[argc];
+  (void)argv;
+  return require;
+}
diff --git a/share/cmake-3.10/Modules/CheckTypeSize.cmake b/share/cmake-3.10/Modules/CheckTypeSize.cmake
new file mode 100644
index 0000000..fcf1df7
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckTypeSize.cmake
@@ -0,0 +1,263 @@
+# 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
+#
+# ::
+#
+#   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 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:
+#
+# ::
+#
+#   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_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)
+
+cmake_policy(PUSH)
+cmake_policy(SET CMP0054 NEW)
+
+get_filename_component(__check_type_size_dir "${CMAKE_CURRENT_LIST_FILE}" PATH)
+
+#-----------------------------------------------------------------------------
+# Helper function.  DO NOT CALL DIRECTLY.
+function(__check_type_size_impl type var map builtin language)
+  if(NOT CMAKE_REQUIRED_QUIET)
+    message(STATUS "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_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(STATUS "Check size of ${type} - 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(STATUS "Check size of ${type} - 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.6/Modules/CheckTypeSizeMap.cmake.in b/share/cmake-3.10/Modules/CheckTypeSizeMap.cmake.in
similarity index 100%
rename from share/cmake-3.6/Modules/CheckTypeSizeMap.cmake.in
rename to share/cmake-3.10/Modules/CheckTypeSizeMap.cmake.in
diff --git a/share/cmake-3.6/Modules/CheckVariableExists.c b/share/cmake-3.10/Modules/CheckVariableExists.c
similarity index 100%
rename from share/cmake-3.6/Modules/CheckVariableExists.c
rename to share/cmake-3.10/Modules/CheckVariableExists.c
diff --git a/share/cmake-3.10/Modules/CheckVariableExists.cmake b/share/cmake-3.10/Modules/CheckVariableExists.cmake
new file mode 100644
index 0000000..fd5c36c
--- /dev/null
+++ b/share/cmake-3.10/Modules/CheckVariableExists.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:
+# CheckVariableExists
+# -------------------
+#
+# Check if the variable exists.
+#
+# ::
+#
+#   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_LIBRARIES = list of libraries to link
+#   CMAKE_REQUIRED_QUIET = execute quietly without messages
+
+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(STATUS "Looking for ${VAR}")
+    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_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(STATUS "Looking for ${VAR} - 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(STATUS "Looking for ${VAR} - 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.6/Modules/Compiler/ADSP-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/ADSP-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/ADSP-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/ADSP-DetermineCompiler.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/ARMCC-ASM.cmake b/share/cmake-3.10/Modules/Compiler/ARMCC-ASM.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/ARMCC-ASM.cmake
rename to share/cmake-3.10/Modules/Compiler/ARMCC-ASM.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/ARMCC-C.cmake b/share/cmake-3.10/Modules/Compiler/ARMCC-C.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/ARMCC-C.cmake
rename to share/cmake-3.10/Modules/Compiler/ARMCC-C.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/ARMCC-CXX.cmake b/share/cmake-3.10/Modules/Compiler/ARMCC-CXX.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/ARMCC-CXX.cmake
rename to share/cmake-3.10/Modules/Compiler/ARMCC-CXX.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/ARMCC-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/ARMCC-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/ARMCC-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/ARMCC-DetermineCompiler.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/ARMCC.cmake b/share/cmake-3.10/Modules/Compiler/ARMCC.cmake
new file mode 100644
index 0000000..250a8f4
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/ARMCC.cmake
@@ -0,0 +1,37 @@
+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")
+endmacro()
diff --git a/share/cmake-3.10/Modules/Compiler/Absoft-Fortran.cmake b/share/cmake-3.10/Modules/Compiler/Absoft-Fortran.cmake
new file mode 100644
index 0000000..da1fc80
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/Absoft-Fortran.cmake
@@ -0,0 +1,10 @@
+string(APPEND CMAKE_Fortran_FLAGS_INIT " ")
+string(APPEND CMAKE_Fortran_FLAGS_DEBUG_INIT " -g")
+string(APPEND CMAKE_Fortran_FLAGS_MINSIZEREL_INIT " ")
+string(APPEND CMAKE_Fortran_FLAGS_RELEASE_INIT " -O3")
+string(APPEND CMAKE_Fortran_FLAGS_RELWITHDEBINFO_INIT " -O2 -g")
+set(CMAKE_Fortran_MODDIR_FLAG "-YMOD_OUT_DIR=")
+set(CMAKE_Fortran_MODPATH_FLAG "-p")
+set(CMAKE_Fortran_VERBOSE_FLAG "-v")
+set(CMAKE_Fortran_FORMAT_FIXED_FLAG "-ffixed")
+set(CMAKE_Fortran_FORMAT_FREE_FLAG "-ffree")
diff --git a/share/cmake-3.6/Modules/Compiler/AppleClang-ASM.cmake b/share/cmake-3.10/Modules/Compiler/AppleClang-ASM.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/AppleClang-ASM.cmake
rename to share/cmake-3.10/Modules/Compiler/AppleClang-ASM.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/AppleClang-C-FeatureTests.cmake b/share/cmake-3.10/Modules/Compiler/AppleClang-C-FeatureTests.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/AppleClang-C-FeatureTests.cmake
rename to share/cmake-3.10/Modules/Compiler/AppleClang-C-FeatureTests.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/AppleClang-C.cmake b/share/cmake-3.10/Modules/Compiler/AppleClang-C.cmake
new file mode 100644
index 0000000..a48adec
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/AppleClang-C.cmake
@@ -0,0 +1,15 @@
+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_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")
+endif()
+
+__compiler_check_default_language_standard(C 4.0 99)
diff --git a/share/cmake-3.6/Modules/Compiler/AppleClang-CXX-FeatureTests.cmake b/share/cmake-3.10/Modules/Compiler/AppleClang-CXX-FeatureTests.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/AppleClang-CXX-FeatureTests.cmake
rename to share/cmake-3.10/Modules/Compiler/AppleClang-CXX-FeatureTests.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/AppleClang-CXX.cmake b/share/cmake-3.10/Modules/Compiler/AppleClang-CXX.cmake
new file mode 100644
index 0000000..e5fd647
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/AppleClang-CXX.cmake
@@ -0,0 +1,30 @@
+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_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")
+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")
+endif()
+
+if (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()
+
+__compiler_check_default_language_standard(CXX 4.0 98)
diff --git a/share/cmake-3.10/Modules/Compiler/AppleClang-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/AppleClang-DetermineCompiler.cmake
new file mode 100644
index 0000000..83817f7
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/AppleClang-DetermineCompiler.cmake
@@ -0,0 +1,7 @@
+
+set(_compiler_id_pp_test "defined(__clang__) && defined(__apple_build_version__)")
+
+include("${CMAKE_CURRENT_LIST_DIR}/Clang-DetermineCompilerInternal.cmake")
+
+string(APPEND _compiler_id_version_compute "
+# define @PREFIX@COMPILER_VERSION_TWEAK @MACRO_DEC@(__apple_build_version__)")
diff --git a/share/cmake-3.6/Modules/Compiler/Borland-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/Borland-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/Borland-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/Borland-DetermineCompiler.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/Bruce-C-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/Bruce-C-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/Bruce-C-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/Bruce-C-DetermineCompiler.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/Bruce-C.cmake b/share/cmake-3.10/Modules/Compiler/Bruce-C.cmake
new file mode 100644
index 0000000..cfabe65
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/Bruce-C.cmake
@@ -0,0 +1,7 @@
+# Bruce C Compiler ignores "-g" flag and optimization cannot be
+# enabled here (it is implemented only for 8086 target).
+string(APPEND CMAKE_C_FLAGS_INIT " -D__CLASSIC_C__")
+string(APPEND CMAKE_C_FLAGS_DEBUG_INIT " -g")
+string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
+string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -DNDEBUG")
+string(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO_INIT " -g -DNDEBUG")
diff --git a/share/cmake-3.6/Modules/Compiler/CCur-Fortran.cmake b/share/cmake-3.10/Modules/Compiler/CCur-Fortran.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/CCur-Fortran.cmake
rename to share/cmake-3.10/Modules/Compiler/CCur-Fortran.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/CMakeCommonCompilerMacros.cmake b/share/cmake-3.10/Modules/Compiler/CMakeCommonCompilerMacros.cmake
new file mode 100644
index 0000000..684fd30
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/CMakeCommonCompilerMacros.cmake
@@ -0,0 +1,93 @@
+# 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)
+    _record_compiler_features_c(11)
+  endif()
+  if(_result EQUAL 0 AND DEFINED CMAKE_C99_STANDARD_COMPILE_OPTION)
+    _record_compiler_features_c(99)
+  endif()
+  if(_result EQUAL 0 AND DEFINED CMAKE_C90_STANDARD_COMPILE_OPTION)
+    _record_compiler_features_c(90)
+  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_CXX17_STANDARD_COMPILE_OPTION)
+    _record_compiler_features_cxx(17)
+  endif()
+  if(_result EQUAL 0 AND DEFINED CMAKE_CXX14_STANDARD_COMPILE_OPTION)
+    _record_compiler_features_cxx(14)
+  endif()
+  if(_result EQUAL 0 AND DEFINED CMAKE_CXX11_STANDARD_COMPILE_OPTION)
+    _record_compiler_features_cxx(11)
+  endif()
+  if(_result EQUAL 0 AND DEFINED CMAKE_CXX98_STANDARD_COMPILE_OPTION)
+    _record_compiler_features_cxx(98)
+  endif()
+endmacro()
diff --git a/share/cmake-3.6/Modules/Compiler/Clang-ASM.cmake b/share/cmake-3.10/Modules/Compiler/Clang-ASM.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/Clang-ASM.cmake
rename to share/cmake-3.10/Modules/Compiler/Clang-ASM.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/Clang-C-FeatureTests.cmake b/share/cmake-3.10/Modules/Compiler/Clang-C-FeatureTests.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/Clang-C-FeatureTests.cmake
rename to share/cmake-3.10/Modules/Compiler/Clang-C-FeatureTests.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/Clang-C.cmake b/share/cmake-3.10/Modules/Compiler/Clang-C.cmake
new file mode 100644
index 0000000..a07ae40
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/Clang-C.cmake
@@ -0,0 +1,36 @@
+include(Compiler/Clang)
+__compiler_clang(C)
+
+cmake_policy(GET CMP0025 appleClangPolicy)
+if(APPLE AND NOT appleClangPolicy STREQUAL NEW)
+  return()
+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_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")
+  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 "")
+  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.10/Modules/Compiler/Clang-CXX-FeatureTests.cmake b/share/cmake-3.10/Modules/Compiler/Clang-CXX-FeatureTests.cmake
new file mode 100644
index 0000000..cd04190
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/Clang-CXX-FeatureTests.cmake
@@ -0,0 +1,33 @@
+
+# Reference: http://clang.llvm.org/cxx_status.html
+# http://clang.llvm.org/docs/LanguageExtensions.html
+
+set(_cmake_oldestSupported "((__clang_major__ * 100) + __clang_minor__) >= 301")
+
+include("${CMAKE_CURRENT_LIST_DIR}/Clang-CXX-TestableFeatures.cmake")
+
+set(Clang34_CXX14 "((__clang_major__ * 100) + __clang_minor__) >= 304 && __cplusplus > 201103L")
+# http://llvm.org/bugs/show_bug.cgi?id=19242
+set(_cmake_feature_test_cxx_attribute_deprecated "${Clang34_CXX14}")
+# http://llvm.org/bugs/show_bug.cgi?id=19698
+set(_cmake_feature_test_cxx_decltype_auto "${Clang34_CXX14}")
+set(_cmake_feature_test_cxx_digit_separators "${Clang34_CXX14}")
+# http://llvm.org/bugs/show_bug.cgi?id=19674
+set(_cmake_feature_test_cxx_generic_lambdas "${Clang34_CXX14}")
+
+set(Clang31_CXX11 "${_cmake_oldestSupported} && __cplusplus >= 201103L")
+set(_cmake_feature_test_cxx_enum_forward_declarations "${Clang31_CXX11}")
+set(_cmake_feature_test_cxx_sizeof_member "${Clang31_CXX11}")
+# TODO: Should be supported by Clang 2.9
+set(Clang29_CXX11 "${_cmake_oldestSupported} && __cplusplus >= 201103L")
+set(_cmake_feature_test_cxx_extended_friend_declarations "${Clang29_CXX11}")
+set(_cmake_feature_test_cxx_extern_templates "${Clang29_CXX11}")
+set(_cmake_feature_test_cxx_func_identifier "${Clang29_CXX11}")
+set(_cmake_feature_test_cxx_inline_namespaces "${Clang29_CXX11}")
+set(_cmake_feature_test_cxx_long_long_type "${Clang29_CXX11}")
+set(_cmake_feature_test_cxx_right_angle_brackets "${Clang29_CXX11}")
+set(_cmake_feature_test_cxx_variadic_macros "${Clang29_CXX11}")
+
+# TODO: Should be supported forever?
+set(Clang_CXX98 "${_cmake_oldestSupported} && __cplusplus >= 199711L")
+set(_cmake_feature_test_cxx_template_template_parameters "${Clang_CXX98}")
diff --git a/share/cmake-3.6/Modules/Compiler/Clang-CXX-TestableFeatures.cmake b/share/cmake-3.10/Modules/Compiler/Clang-CXX-TestableFeatures.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/Clang-CXX-TestableFeatures.cmake
rename to share/cmake-3.10/Modules/Compiler/Clang-CXX-TestableFeatures.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/Clang-CXX.cmake b/share/cmake-3.10/Modules/Compiler/Clang-CXX.cmake
new file mode 100644
index 0000000..efc68b3
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/Clang-CXX.cmake
@@ -0,0 +1,55 @@
+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()
+
+cmake_policy(GET CMP0025 appleClangPolicy)
+if(APPLE AND NOT appleClangPolicy STREQUAL NEW)
+  return()
+endif()
+
+if(NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
+  if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 2.1)
+    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 3.1)
+    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 2.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 3.5)
+    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 3.4)
+    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 3.5)
+    set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++1z")
+    set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++1z")
+  endif()
+else()
+  # clang-cl does not know these options because it behaves like cl.exe
+  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 "")
+endif()
+
+if(NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
+  __compiler_check_default_language_standard(CXX 2.1 98)
+else()
+  set(CMAKE_CXX_STANDARD_DEFAULT "")
+endif()
diff --git a/share/cmake-3.6/Modules/Compiler/Clang-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/Clang-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/Clang-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/Clang-DetermineCompiler.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/Clang-DetermineCompilerInternal.cmake b/share/cmake-3.10/Modules/Compiler/Clang-DetermineCompilerInternal.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/Clang-DetermineCompilerInternal.cmake
rename to share/cmake-3.10/Modules/Compiler/Clang-DetermineCompilerInternal.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/Clang-FindBinUtils.cmake b/share/cmake-3.10/Modules/Compiler/Clang-FindBinUtils.cmake
new file mode 100644
index 0000000..b852660
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/Clang-FindBinUtils.cmake
@@ -0,0 +1,35 @@
+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.10/Modules/Compiler/Clang.cmake b/share/cmake-3.10/Modules/Compiler/Clang.cmake
new file mode 100644
index 0000000..9f5e921
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/Clang.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.
+
+
+# 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")
+  macro(__compiler_clang lang)
+  endmacro()
+else()
+  include(Compiler/GNU)
+
+  macro(__compiler_clang lang)
+    __compiler_gnu(${lang})
+    set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "-fPIE")
+    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}_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>"
+    )
+  endmacro()
+endif()
diff --git a/share/cmake-3.6/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/Compaq-C-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/Compaq-C-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/Compaq-C-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/Compaq-C-DetermineCompiler.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/Cray-C.cmake b/share/cmake-3.10/Modules/Compiler/Cray-C.cmake
new file mode 100644
index 0000000..87ce20f
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/Cray-C.cmake
@@ -0,0 +1,22 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+include(Compiler/Cray)
+
+set(CMAKE_C_VERBOSE_FLAG "-v")
+
+string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
+string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -DNDEBUG")
+
+if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 8.1)
+  set(CMAKE_C90_STANDARD_COMPILE_OPTION  -h noc99,conform)
+  set(CMAKE_C90_EXTENSION_COMPILE_OPTION -h noc99,gnu)
+  set(CMAKE_C99_STANDARD_COMPILE_OPTION  -h c99,conform)
+  set(CMAKE_C99_EXTENSION_COMPILE_OPTION -h c99,gnu)
+  if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 8.5)
+    set(CMAKE_C11_STANDARD_COMPILE_OPTION  -h std=c11,conform)
+    set(CMAKE_C11_EXTENSION_COMPILE_OPTION -h std=c11,gnu)
+  endif ()
+endif ()
+
+__compiler_check_default_language_standard(C 8.1 99)
diff --git a/share/cmake-3.10/Modules/Compiler/Cray-CXX.cmake b/share/cmake-3.10/Modules/Compiler/Cray-CXX.cmake
new file mode 100644
index 0000000..8506c09
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/Cray-CXX.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/Cray)
+
+set(CMAKE_CXX_VERBOSE_FLAG "-v")
+
+string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
+string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " -DNDEBUG")
+
+if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 8.1)
+  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION  -h conform)
+  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION -h gnu)
+  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.4)
+    set(CMAKE_CXX11_STANDARD_COMPILE_OPTION  -h std=c++11)
+    set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION -h std=c++11,gnu)
+  endif ()
+endif ()
+
+__compiler_check_default_language_standard(CXX 8.1 98)
diff --git a/share/cmake-3.6/Modules/Compiler/Cray-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/Cray-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/Cray-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/Cray-DetermineCompiler.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/Cray-Fortran.cmake b/share/cmake-3.10/Modules/Compiler/Cray-Fortran.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/Cray-Fortran.cmake
rename to share/cmake-3.10/Modules/Compiler/Cray-Fortran.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/Cray.cmake b/share/cmake-3.10/Modules/Compiler/Cray.cmake
new file mode 100644
index 0000000..8fe8eeb
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/Cray.cmake
@@ -0,0 +1,10 @@
+# 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_CRAY)
+  return()
+endif()
+set(__COMPILER_CRAY 1)
+
+include(Compiler/CMakeCommonCompilerMacros)
diff --git a/share/cmake-3.6/Modules/Compiler/CrayPrgEnv-C.cmake b/share/cmake-3.10/Modules/Compiler/CrayPrgEnv-C.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/CrayPrgEnv-C.cmake
rename to share/cmake-3.10/Modules/Compiler/CrayPrgEnv-C.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/CrayPrgEnv-CXX.cmake b/share/cmake-3.10/Modules/Compiler/CrayPrgEnv-CXX.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/CrayPrgEnv-CXX.cmake
rename to share/cmake-3.10/Modules/Compiler/CrayPrgEnv-CXX.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/CrayPrgEnv-Cray-C.cmake b/share/cmake-3.10/Modules/Compiler/CrayPrgEnv-Cray-C.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/CrayPrgEnv-Cray-C.cmake
rename to share/cmake-3.10/Modules/Compiler/CrayPrgEnv-Cray-C.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/CrayPrgEnv-Cray-CXX.cmake b/share/cmake-3.10/Modules/Compiler/CrayPrgEnv-Cray-CXX.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/CrayPrgEnv-Cray-CXX.cmake
rename to share/cmake-3.10/Modules/Compiler/CrayPrgEnv-Cray-CXX.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/CrayPrgEnv-Cray-Fortran.cmake b/share/cmake-3.10/Modules/Compiler/CrayPrgEnv-Cray-Fortran.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/CrayPrgEnv-Cray-Fortran.cmake
rename to share/cmake-3.10/Modules/Compiler/CrayPrgEnv-Cray-Fortran.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/CrayPrgEnv-Fortran.cmake b/share/cmake-3.10/Modules/Compiler/CrayPrgEnv-Fortran.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/CrayPrgEnv-Fortran.cmake
rename to share/cmake-3.10/Modules/Compiler/CrayPrgEnv-Fortran.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/CrayPrgEnv-GNU-C.cmake b/share/cmake-3.10/Modules/Compiler/CrayPrgEnv-GNU-C.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/CrayPrgEnv-GNU-C.cmake
rename to share/cmake-3.10/Modules/Compiler/CrayPrgEnv-GNU-C.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/CrayPrgEnv-GNU-CXX.cmake b/share/cmake-3.10/Modules/Compiler/CrayPrgEnv-GNU-CXX.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/CrayPrgEnv-GNU-CXX.cmake
rename to share/cmake-3.10/Modules/Compiler/CrayPrgEnv-GNU-CXX.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/CrayPrgEnv-GNU-Fortran.cmake b/share/cmake-3.10/Modules/Compiler/CrayPrgEnv-GNU-Fortran.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/CrayPrgEnv-GNU-Fortran.cmake
rename to share/cmake-3.10/Modules/Compiler/CrayPrgEnv-GNU-Fortran.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/CrayPrgEnv-Intel-C.cmake b/share/cmake-3.10/Modules/Compiler/CrayPrgEnv-Intel-C.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/CrayPrgEnv-Intel-C.cmake
rename to share/cmake-3.10/Modules/Compiler/CrayPrgEnv-Intel-C.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/CrayPrgEnv-Intel-CXX.cmake b/share/cmake-3.10/Modules/Compiler/CrayPrgEnv-Intel-CXX.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/CrayPrgEnv-Intel-CXX.cmake
rename to share/cmake-3.10/Modules/Compiler/CrayPrgEnv-Intel-CXX.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/CrayPrgEnv-Intel-Fortran.cmake b/share/cmake-3.10/Modules/Compiler/CrayPrgEnv-Intel-Fortran.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/CrayPrgEnv-Intel-Fortran.cmake
rename to share/cmake-3.10/Modules/Compiler/CrayPrgEnv-Intel-Fortran.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/CrayPrgEnv-PGI-C.cmake b/share/cmake-3.10/Modules/Compiler/CrayPrgEnv-PGI-C.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/CrayPrgEnv-PGI-C.cmake
rename to share/cmake-3.10/Modules/Compiler/CrayPrgEnv-PGI-C.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/CrayPrgEnv-PGI-CXX.cmake b/share/cmake-3.10/Modules/Compiler/CrayPrgEnv-PGI-CXX.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/CrayPrgEnv-PGI-CXX.cmake
rename to share/cmake-3.10/Modules/Compiler/CrayPrgEnv-PGI-CXX.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/CrayPrgEnv-PGI-Fortran.cmake b/share/cmake-3.10/Modules/Compiler/CrayPrgEnv-PGI-Fortran.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/CrayPrgEnv-PGI-Fortran.cmake
rename to share/cmake-3.10/Modules/Compiler/CrayPrgEnv-PGI-Fortran.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/CrayPrgEnv.cmake b/share/cmake-3.10/Modules/Compiler/CrayPrgEnv.cmake
new file mode 100644
index 0000000..9f8befd
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/CrayPrgEnv.cmake
@@ -0,0 +1,93 @@
+# Guard against multiple inclusions
+if(__craylinux_crayprgenv)
+  return()
+endif()
+set(__craylinux_crayprgenv 1)
+
+macro(__cray_extract_args cmd tag_regex out_var make_absolute)
+  string(REGEX MATCHALL "${tag_regex}" args "${cmd}")
+  foreach(arg IN LISTS args)
+    string(REGEX REPLACE "^${tag_regex}$" "\\2" param "${arg}")
+    if(make_absolute)
+      get_filename_component(param "${param}" ABSOLUTE)
+    endif()
+    list(APPEND ${out_var} ${param})
+  endforeach()
+endmacro()
+
+function(__cray_extract_implicit src compiler_cmd link_cmd lang include_dirs_var link_dirs_var link_libs_var)
+  set(BIN "${CMAKE_PLATFORM_INFO_DIR}/CrayExtractImplicit_${lang}.bin")
+  execute_process(
+    COMMAND ${CMAKE_${lang}_COMPILER} ${CMAKE_${lang}_VERBOSE_FLAG} -o ${BIN}
+    RESULT_VARIABLE result
+    OUTPUT_VARIABLE output
+    ERROR_VARIABLE error
+    )
+  if(EXISTS "${BIN}")
+    file(REMOVE "${BIN}")
+  endif()
+  set(include_dirs)
+  set(link_dirs)
+  set(link_libs)
+  string(REGEX REPLACE "\r?\n" ";" output_lines "${output}\n${error}")
+  foreach(line IN LISTS output_lines)
+    if("${line}" MATCHES "${compiler_cmd}")
+      __cray_extract_args("${line}" " -(I ?|isystem )([^ ]*)" include_dirs 1)
+      set(processed_include 1)
+    endif()
+    if("${line}" MATCHES "${link_cmd}")
+      __cray_extract_args("${line}" " -(L ?)([^ ]*)" link_dirs 1)
+      __cray_extract_args("${line}" " -(l ?)([^ ]*)" link_libs 0)
+      set(processed_link 1)
+    endif()
+    if(processed_include AND processed_link)
+      break()
+    endif()
+  endforeach()
+
+  set(${include_dirs_var} "${include_dirs}" PARENT_SCOPE)
+  set(${link_dirs_var}    "${link_dirs}" PARENT_SCOPE)
+  set(${link_libs_var}    "${link_libs}" PARENT_SCOPE)
+  set(CRAY_${lang}_EXTRACTED_IMPLICIT 1 CACHE INTERNAL "" FORCE)
+endfunction()
+
+macro(__CrayPrgEnv_setup lang test_src compiler_cmd link_cmd)
+  if(DEFINED ENV{CRAYPE_VERSION})
+    message(STATUS "Cray Programming Environment $ENV{CRAYPE_VERSION} ${lang}")
+  elseif(DEFINED ENV{ASYNCPE_VERSION})
+    message(STATUS "Cray XT Programming Environment $ENV{ASYNCPE_VERSION} ${lang}")
+  else()
+    message(STATUS "Cray Programming Environment (unknown version) ${lang}")
+  endif()
+
+  # Flags for the Cray wrappers
+  set(CMAKE_STATIC_LIBRARY_LINK_${lang}_FLAGS "-static")
+  set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "")
+  set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-shared")
+  set(CMAKE_SHARED_LIBRARY_LINK_${lang}_FLAGS "-dynamic")
+
+  # If the link type is not explicitly specified in the environment then
+  # the Cray wrappers assume that the code will be built staticly so
+  # we check the following condition(s) are NOT met
+  #  Compiler flags are explicitly dynamic
+  #  Env var is dynamic and compiler flags are not explicitly static
+  if(NOT (((CMAKE_${lang}_FLAGS MATCHES "(^| )-dynamic($| )") OR
+         (CMAKE_EXE_LINKER_FLAGS MATCHES "(^| )-dynamic($| )"))
+         OR
+         (("$ENV{CRAYPE_LINK_TYPE}" STREQUAL "dynamic") AND
+          NOT ((CMAKE_${lang}_FLAGS MATCHES "(^| )-static($| )") OR
+               (CMAKE_EXE_LINKER_FLAGS MATCHES "(^| )-static($| )")))))
+    set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS FALSE)
+    set(BUILD_SHARED_LIBS FALSE CACHE BOOL "")
+    set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
+    set(CMAKE_LINK_SEARCH_START_STATIC TRUE)
+  endif()
+  if(NOT CRAY_${lang}_EXTRACTED_IMPLICIT)
+    __cray_extract_implicit(
+      ${test_src} ${compiler_cmd} ${link_cmd} ${lang}
+      CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES
+      CMAKE_${lang}_IMPLICIT_LINK_DIRECTORIES
+      CMAKE_${lang}_IMPLICIT_LINK_LIBRARIES
+      )
+  endif()
+endmacro()
diff --git a/share/cmake-3.6/Modules/Compiler/Embarcadero-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/Embarcadero-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/Embarcadero-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/Embarcadero-DetermineCompiler.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/Flang-FindBinUtils.cmake b/share/cmake-3.10/Modules/Compiler/Flang-FindBinUtils.cmake
new file mode 100644
index 0000000..e721c87
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/Flang-FindBinUtils.cmake
@@ -0,0 +1 @@
+include(Compiler/Clang-FindBinUtils)
diff --git a/share/cmake-3.10/Modules/Compiler/Flang-Fortran.cmake b/share/cmake-3.10/Modules/Compiler/Flang-Fortran.cmake
new file mode 100644
index 0000000..a1051f4
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/Flang-Fortran.cmake
@@ -0,0 +1,10 @@
+include(Compiler/Clang)
+__compiler_clang(Fortran)
+
+set(CMAKE_Fortran_PREPROCESS_SOURCE
+    "<CMAKE_Fortran_COMPILER> -cpp <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> -o <PREPROCESSED_SOURCE>")
+
+set(CMAKE_Fortran_FORMAT_FIXED_FLAG "-ffixed-form")
+set(CMAKE_Fortran_FORMAT_FREE_FLAG "-ffree-form")
+
+set(CMAKE_Fortran_MODDIR_FLAG "-J")
diff --git a/share/cmake-3.6/Modules/Compiler/Fujitsu-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/Fujitsu-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/Fujitsu-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/Fujitsu-DetermineCompiler.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/G95-Fortran.cmake b/share/cmake-3.10/Modules/Compiler/G95-Fortran.cmake
new file mode 100644
index 0000000..2c83fb8
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/G95-Fortran.cmake
@@ -0,0 +1,9 @@
+string(APPEND CMAKE_Fortran_FLAGS_INIT " ")
+string(APPEND CMAKE_Fortran_FLAGS_DEBUG_INIT " -g")
+string(APPEND CMAKE_Fortran_FLAGS_MINSIZEREL_INIT " -Os")
+string(APPEND CMAKE_Fortran_FLAGS_RELEASE_INIT " -O3")
+string(APPEND CMAKE_Fortran_FLAGS_RELWITHDEBINFO_INIT " -O2 -g")
+set(CMAKE_Fortran_MODDIR_FLAG "-fmod=")
+set(CMAKE_Fortran_VERBOSE_FLAG "-v")
+set(CMAKE_Fortran_FORMAT_FIXED_FLAG "-ffixed-form")
+set(CMAKE_Fortran_FORMAT_FREE_FLAG "-ffree-form")
diff --git a/share/cmake-3.10/Modules/Compiler/GHS-C.cmake b/share/cmake-3.10/Modules/Compiler/GHS-C.cmake
new file mode 100644
index 0000000..c30bdec
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/GHS-C.cmake
@@ -0,0 +1,30 @@
+include(Compiler/GHS)
+
+set(CMAKE_C_VERBOSE_FLAG "-v")
+set(CMAKE_C_OUTPUT_EXTENSION ".o")
+
+string(APPEND CMAKE_C_FLAGS_INIT " ")
+string(APPEND CMAKE_C_FLAGS_DEBUG_INIT " -Odebug -g")
+string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -Ospace")
+string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -O")
+string(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO_INIT " -O -g")
+
+set(CMAKE_C_GHS_KERNEL_FLAGS_DEBUG_INIT "-ldebug ${CMAKE_C_FLAGS_DEBUG_INIT}")
+set(CMAKE_C_GHS_KERNEL_FLAGS_MINSIZEREL_INIT "${CMAKE_C_FLAGS_MINSIZEREL_INIT}")
+set(CMAKE_C_GHS_KERNEL_FLAGS_RELEASE_INIT "${CMAKE_C_FLAGS_RELEASE_INIT}")
+set(CMAKE_C_GHS_KERNEL_FLAGS_RELWITHDEBINFO_INIT
+  "-ldebug ${CMAKE_C_FLAGS_RELWITHDEBINFO_INIT}")
+
+if(NOT CMAKE_NOT_USING_CONFIG_FLAGS)
+  set (CMAKE_C_GHS_KERNEL_FLAGS_DEBUG "${CMAKE_C_GHS_KERNEL_FLAGS_DEBUG_INIT}"
+    CACHE STRING "Kernel flags used by the compiler during debug builds.")
+  set (CMAKE_C_GHS_KERNEL_FLAGS_MINSIZEREL
+    "${CMAKE_C_GHS_KERNEL_FLAGS_MINSIZEREL_INIT}" CACHE STRING
+    "Kernel flags used by the compiler during release builds for minimum size.")
+  set (CMAKE_C_GHS_KERNEL_FLAGS_RELEASE
+    "${CMAKE_C_GHS_KERNEL_FLAGS_RELEASE_INIT}"
+    CACHE STRING "Kernel flags used by the compiler during release builds.")
+  set (CMAKE_C_GHS_KERNEL_FLAGS_RELWITHDEBINFO
+    "${CMAKE_C_GHS_KERNEL_FLAGS_RELWITHDEBINFO_INIT}" CACHE STRING
+    "Kernel flags used by the compiler during release builds with debug info.")
+endif()
diff --git a/share/cmake-3.10/Modules/Compiler/GHS-CXX.cmake b/share/cmake-3.10/Modules/Compiler/GHS-CXX.cmake
new file mode 100644
index 0000000..b3018a7
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/GHS-CXX.cmake
@@ -0,0 +1,34 @@
+include(Compiler/GHS)
+
+set(CMAKE_CXX_VERBOSE_FLAG "-v")
+set(CMAKE_CXX_OUTPUT_EXTENSION ".o")
+
+string(APPEND CMAKE_CXX_FLAGS_INIT " ")
+string(APPEND CMAKE_CXX_FLAGS_DEBUG_INIT " -Odebug -g")
+string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL_INIT " -Ospace")
+string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " -O")
+string(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT " -O -g")
+
+set(CMAKE_CXX_GHS_KERNEL_FLAGS_DEBUG_INIT
+  "-ldebug ${CMAKE_CXX_FLAGS_DEBUG_INIT}")
+set(CMAKE_CXX_GHS_KERNEL_FLAGS_MINSIZEREL_INIT
+  "${CMAKE_CXX_FLAGS_MINSIZEREL_INIT}")
+set(CMAKE_CXX_GHS_KERNEL_FLAGS_RELEASE_INIT
+  "${CMAKE_CXX_FLAGS_RELEASE_INIT}")
+set(CMAKE_CXX_GHS_KERNEL_FLAGS_RELWITHDEBINFO_INIT
+  "-ldebug ${CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT}")
+
+if(NOT CMAKE_NOT_USING_CONFIG_FLAGS)
+  set (CMAKE_CXX_GHS_KERNEL_FLAGS_DEBUG
+    "${CMAKE_CXX_GHS_KERNEL_FLAGS_DEBUG_INIT}"
+    CACHE STRING "Kernel flags used by the compiler during debug builds.")
+  set (CMAKE_CXX_GHS_KERNEL_FLAGS_MINSIZEREL
+    "${CMAKE_CXX_GHS_KERNEL_FLAGS_MINSIZEREL_INIT}" CACHE STRING
+    "Kernel flags used by the compiler during release builds for minimum size.")
+  set (CMAKE_CXX_GHS_KERNEL_FLAGS_RELEASE
+    "${CMAKE_CXX_GHS_KERNEL_FLAGS_RELEASE_INIT}"
+    CACHE STRING "Kernel flags used by the compiler during release builds.")
+  set (CMAKE_CXX_GHS_KERNEL_FLAGS_RELWITHDEBINFO
+    "${CMAKE_CXX_GHS_KERNEL_FLAGS_RELWITHDEBINFO_INIT}" CACHE STRING
+    "Kernel flags used by the compiler during release builds with debug info.")
+endif()
diff --git a/share/cmake-3.6/Modules/Compiler/GHS-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/GHS-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/GHS-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/GHS-DetermineCompiler.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/GHS.cmake b/share/cmake-3.10/Modules/Compiler/GHS.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/GHS.cmake
rename to share/cmake-3.10/Modules/Compiler/GHS.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/GNU-ASM.cmake b/share/cmake-3.10/Modules/Compiler/GNU-ASM.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/GNU-ASM.cmake
rename to share/cmake-3.10/Modules/Compiler/GNU-ASM.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/GNU-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/GNU-C-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/GNU-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/GNU-C-DetermineCompiler.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/GNU-C-FeatureTests.cmake b/share/cmake-3.10/Modules/Compiler/GNU-C-FeatureTests.cmake
new file mode 100644
index 0000000..0ab5265
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/GNU-C-FeatureTests.cmake
@@ -0,0 +1,17 @@
+
+set(_cmake_oldestSupported "(__GNUC__ * 100 + __GNUC_MINOR__) >= 304")
+
+# GNU 4.7 correctly sets __STDC_VERSION__ to 201112L, but GNU 4.6 sets it
+# to 201000L.  As the former is strictly greater than the latter, test only
+# for the latter.  If in the future CMake learns about a C feature which was
+# introduced with GNU 4.7, that should test for the correct version, similar
+# to the distinction between __cplusplus and __GXX_EXPERIMENTAL_CXX0X__ tests.
+set(GNU46_C11 "(__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201000L")
+set(_cmake_feature_test_c_static_assert "${GNU46_C11}")
+# Since 3.4 at least:
+set(GNU34_C99 "(__GNUC__ * 100 + __GNUC_MINOR__) >= 304 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L")
+set(_cmake_feature_test_c_restrict "${GNU34_C99}")
+set(_cmake_feature_test_c_variadic_macros "${GNU34_C99}")
+
+set(GNU_C90 "${_cmake_oldestSupported}")
+set(_cmake_feature_test_c_function_prototypes "${GNU_C90}")
diff --git a/share/cmake-3.10/Modules/Compiler/GNU-C.cmake b/share/cmake-3.10/Modules/Compiler/GNU-C.cmake
new file mode 100644
index 0000000..f072c54
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/GNU-C.cmake
@@ -0,0 +1,25 @@
+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_C99_STANDARD_COMPILE_OPTION "-std=c99")
+  set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=gnu99")
+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")
+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.10/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake
new file mode 100644
index 0000000..c25b147
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake
@@ -0,0 +1,15 @@
+
+set(_compiler_id_pp_test "defined(__GNUC__) || defined(__GNUG__)")
+
+set(_compiler_id_version_compute "
+# if defined(__GNUC__)
+#  define @PREFIX@COMPILER_VERSION_MAJOR @MACRO_DEC@(__GNUC__)
+# else
+#  define @PREFIX@COMPILER_VERSION_MAJOR @MACRO_DEC@(__GNUG__)
+# endif
+# if defined(__GNUC_MINOR__)
+#  define @PREFIX@COMPILER_VERSION_MINOR @MACRO_DEC@(__GNUC_MINOR__)
+# endif
+# if defined(__GNUC_PATCHLEVEL__)
+#  define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@(__GNUC_PATCHLEVEL__)
+# endif")
diff --git a/share/cmake-3.6/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/share/cmake-3.10/Modules/Compiler/GNU-CXX-FeatureTests.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/GNU-CXX-FeatureTests.cmake
rename to share/cmake-3.10/Modules/Compiler/GNU-CXX-FeatureTests.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/GNU-CXX.cmake b/share/cmake-3.10/Modules/Compiler/GNU-CXX.cmake
new file mode 100644
index 0000000..4f1f30e
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/GNU-CXX.cmake
@@ -0,0 +1,41 @@
+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_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.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.1)
+  set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++1z")
+  set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++1z")
+endif()
+
+__compiler_check_default_language_standard(CXX 3.4 98 6.0 14)
diff --git a/share/cmake-3.10/Modules/Compiler/GNU-FindBinUtils.cmake b/share/cmake-3.10/Modules/Compiler/GNU-FindBinUtils.cmake
new file mode 100644
index 0000000..16b7bbd
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/GNU-FindBinUtils.cmake
@@ -0,0 +1,35 @@
+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"
+    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"
+    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.10/Modules/Compiler/GNU-Fortran.cmake b/share/cmake-3.10/Modules/Compiler/GNU-Fortran.cmake
new file mode 100644
index 0000000..c333d50
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/GNU-Fortran.cmake
@@ -0,0 +1,20 @@
+include(Compiler/GNU)
+__compiler_gnu(Fortran)
+
+set(CMAKE_Fortran_PREPROCESS_SOURCE
+  "<CMAKE_Fortran_COMPILER> -cpp <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> -o <PREPROCESSED_SOURCE>")
+
+set(CMAKE_Fortran_FORMAT_FIXED_FLAG "-ffixed-form")
+set(CMAKE_Fortran_FORMAT_FREE_FLAG "-ffree-form")
+
+set(CMAKE_Fortran_POSTPROCESS_FLAG "-fpreprocessed")
+
+# No -DNDEBUG for Fortran.
+string(APPEND CMAKE_Fortran_FLAGS_MINSIZEREL_INIT " -Os")
+string(APPEND CMAKE_Fortran_FLAGS_RELEASE_INIT " -O3")
+
+# No -isystem for Fortran because it will not find .mod files.
+unset(CMAKE_INCLUDE_SYSTEM_FLAG_Fortran)
+
+# Fortran-specific feature flags.
+set(CMAKE_Fortran_MODDIR_FLAG -J)
diff --git a/share/cmake-3.10/Modules/Compiler/GNU.cmake b/share/cmake-3.10/Modules/Compiler/GNU.cmake
new file mode 100644
index 0000000..d962688
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/GNU.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.
+
+
+# This module is shared by multiple languages; use include blocker.
+if(__COMPILER_GNU)
+  return()
+endif()
+set(__COMPILER_GNU 1)
+
+include(Compiler/CMakeCommonCompilerMacros)
+
+macro(__compiler_gnu lang)
+  # Feature flags.
+  set(CMAKE_${lang}_VERBOSE_FLAG "-v")
+  set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "-fPIC")
+  if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.4)
+    set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "-fPIE")
+  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=")
+
+  # 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(NOT _IN_TC OR CMAKE_FORCE_DEPFILES)
+    # 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()
+endmacro()
diff --git a/share/cmake-3.6/Modules/Compiler/HP-ASM.cmake b/share/cmake-3.10/Modules/Compiler/HP-ASM.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/HP-ASM.cmake
rename to share/cmake-3.10/Modules/Compiler/HP-ASM.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/HP-C-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/HP-C-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/HP-C-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/HP-C-DetermineCompiler.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/HP-C.cmake b/share/cmake-3.10/Modules/Compiler/HP-C.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/HP-C.cmake
rename to share/cmake-3.10/Modules/Compiler/HP-C.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/HP-CXX-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/HP-CXX-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/HP-CXX-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/HP-CXX-DetermineCompiler.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/HP-CXX.cmake b/share/cmake-3.10/Modules/Compiler/HP-CXX.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/HP-CXX.cmake
rename to share/cmake-3.10/Modules/Compiler/HP-CXX.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/HP-Fortran.cmake b/share/cmake-3.10/Modules/Compiler/HP-Fortran.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/HP-Fortran.cmake
rename to share/cmake-3.10/Modules/Compiler/HP-Fortran.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/IAR-ASM.cmake b/share/cmake-3.10/Modules/Compiler/IAR-ASM.cmake
new file mode 100644
index 0000000..651bc3a
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/IAR-ASM.cmake
@@ -0,0 +1,21 @@
+# 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_ARM(ASM)
+  set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS s;asm;msa)
+
+  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")
+
+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_AVR(ASM)
+  set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS s90;asm;msa)
+
+endif()
diff --git a/share/cmake-3.10/Modules/Compiler/IAR-C.cmake b/share/cmake-3.10/Modules/Compiler/IAR-C.cmake
new file mode 100644
index 0000000..55e019e
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/IAR-C.cmake
@@ -0,0 +1,43 @@
+# This file is processed when the IAR compiler is used for a C file
+
+include(Compiler/IAR)
+include(Compiler/CMakeCommonCompilerMacros)
+
+# The toolchains for ARM and AVR are quite different:
+if("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "ARM")
+
+  set(CMAKE_C_EXTENSION_COMPILE_OPTION -e)
+
+  set(CMAKE_C90_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_C90_EXTENSION_COMPILE_OPTION -e)
+
+  if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 6.10)
+    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)
+  endif()
+  if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 8.10)
+    set(CMAKE_C11_STANDARD_COMPILE_OPTION "")
+    set(CMAKE_C11_EXTENSION_COMPILE_OPTION -e)
+  endif()
+
+  __compiler_iar_ARM(C)
+  __compiler_check_default_language_standard(C 1.10 90 6.10 99 8.10 11)
+
+elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "AVR")
+  __compiler_iar_AVR(C)
+  set(CMAKE_C_OUTPUT_EXTENSION ".r90")
+
+  if(NOT CMAKE_C_LINK_FLAGS)
+    set(CMAKE_C_LINK_FLAGS "-Fmotorola")
+  endif()
+
+  set(CMAKE_C_LINK_EXECUTABLE "<CMAKE_LINKER> <OBJECTS> <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES> -o <TARGET>")
+  set(CMAKE_C_CREATE_STATIC_LIBRARY "<CMAKE_AR> -o <TARGET> <OBJECTS> ")
+
+  # add the target specific include directory:
+  get_filename_component(_compilerDir "${CMAKE_C_COMPILER}" PATH)
+  get_filename_component(_compilerDir "${_compilerDir}" PATH)
+  include_directories("${_compilerDir}/inc" )
+endif()
diff --git a/share/cmake-3.10/Modules/Compiler/IAR-CXX.cmake b/share/cmake-3.10/Modules/Compiler/IAR-CXX.cmake
new file mode 100644
index 0000000..8d86100
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/IAR-CXX.cmake
@@ -0,0 +1,51 @@
+# This file is processed when the IAR compiler is used for a C++ file
+
+include(Compiler/IAR)
+include(Compiler/CMakeCommonCompilerMacros)
+
+if("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "ARM")
+  # "(extended) embedded C++" Mode
+  # old version: --ec++ or --eec++
+  # since 8.10:  --c++ --no_exceptions --no_rtti
+  #
+  # --c++ is full C++ and supported since 6.10
+  if(NOT CMAKE_IAR_CXX_FLAG)
+    if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 6.10)
+      set(CMAKE_IAR_CXX_FLAG --c++)
+    else()
+      set(CMAKE_IAR_CXX_FLAG --eec++)
+    endif()
+  endif()
+
+  set(CMAKE_CXX_EXTENSION_COMPILE_OPTION -e)
+
+  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION -e)
+
+  if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.10)
+  set(CMAKE_CXX03_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_CXX03_EXTENSION_COMPILE_OPTION -e)
+  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()
+
+  __compiler_iar_ARM(CXX)
+  __compiler_check_default_language_standard(CXX 6.10 98 8.10 14)
+
+elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "AVR")
+  __compiler_iar_AVR(CXX)
+  set(CMAKE_CXX_OUTPUT_EXTENSION ".r90")
+  if(NOT CMAKE_CXX_LINK_FLAGS)
+    set(CMAKE_CXX_LINK_FLAGS "-Fmotorola")
+  endif()
+
+  set(CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_LINKER> <OBJECTS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES> -o <TARGET>")
+  set(CMAKE_CXX_CREATE_STATIC_LIBRARY "<CMAKE_AR> -o <TARGET> <OBJECTS> ")
+
+  # add the target specific include directory:
+  get_filename_component(_compilerDir "${CMAKE_C_COMPILER}" PATH)
+  get_filename_component(_compilerDir "${_compilerDir}" PATH)
+  include_directories("${_compilerDir}/inc")
+endif()
diff --git a/share/cmake-3.10/Modules/Compiler/IAR-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/IAR-DetermineCompiler.cmake
new file mode 100644
index 0000000..a1bffeb
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/IAR-DetermineCompiler.cmake
@@ -0,0 +1,21 @@
+# IAR Systems compiler for 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.
+
+set(_compiler_id_pp_test "defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)")
+
+set(_compiler_id_version_compute "
+# if defined(__VER__)
+#  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__)
+# endif")
diff --git a/share/cmake-3.10/Modules/Compiler/IAR-FindBinUtils.cmake b/share/cmake-3.10/Modules/Compiler/IAR-FindBinUtils.cmake
new file mode 100644
index 0000000..d662f56
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/IAR-FindBinUtils.cmake
@@ -0,0 +1,54 @@
+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 Clang 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")
+  # could allow using normal binutils ar, since objects are normal ELF files?
+  find_program(CMAKE_IAR_LINKARM ilinkarm.exe HINTS ${__iar_hints}
+      DOC "The IAR ARM linker")
+  find_program(CMAKE_IAR_ARCHIVE iarchive.exe HINTS ${__iar_hints}
+      DOC "The IAR archiver")
+
+  # find auxillary tools
+  find_program(CMAKE_IAR_ELFTOOL ielftool.exe HINTS ${__iar_hints}
+      DOC "The IAR ELF Tool")
+    find_program(CMAKE_IAR_ELFDUMP ielfdumparm.exe HINTS ${__iar_hints}
+      DOC "The IAR ELF Dumper")
+  find_program(CMAKE_IAR_OBJMANIP iobjmanip.exe HINTS ${__iar_hints}
+      DOC "The IAR ELF Object Tool")
+  find_program(CMAKE_IAR_SYMEXPORT isymexport.exe HINTS ${__iar_hints}
+      DOC "The IAR Absolute Symbol Exporter")
+  mark_as_advanced(CMAKE_IAR_LINKARM 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_LINKARM \"${CMAKE_IAR_LINKARM}\")
+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_LINKARM \"${CMAKE_IAR_LINKARM}\")
+")
+
+
+elseif("${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" STREQUAL "AVR")
+
+  # For AVR and AVR32, IAR uses the "xlink" linker and the "xar" archiver:
+  find_program(CMAKE_IAR_LINKER xlink.exe HINTS ${__iar_hints}
+      DOC "The IAR AVR linker")
+  find_program(CMAKE_IAR_AR xar.exe 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.10/Modules/Compiler/IAR.cmake b/share/cmake-3.10/Modules/Compiler/IAR.cmake
new file mode 100644
index 0000000..52ebaf2
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/IAR.cmake
@@ -0,0 +1,76 @@
+# 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:
+# 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
+
+# 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 meaningfull 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.
+if(_IARARM_CMAKE_LOADED)
+  return()
+endif()
+set(_IARARM_CMAKE_LOADED 1)
+
+macro(__compiler_iar_ARM 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()
+
+  set(CMAKE_${lang}_LINK_EXECUTABLE "\"${CMAKE_IAR_LINKARM}\" --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_LINKARM}" CACHE FILEPATH "The IAR linker" FORCE)
+  set(CMAKE_AR "${CMAKE_IAR_ARCHIVE}" CACHE FILEPATH "The IAR archiver" FORCE)
+endmacro()
+
+macro(__compiler_iar_AVR lang)
+  set(CMAKE_EXECUTABLE_SUFFIX ".bin")
+
+  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.6/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake b/share/cmake-3.10/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake
rename to share/cmake-3.10/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake b/share/cmake-3.10/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake
rename to share/cmake-3.10/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/Intel-ASM.cmake b/share/cmake-3.10/Modules/Compiler/Intel-ASM.cmake
new file mode 100644
index 0000000..c2bf465
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/Intel-ASM.cmake
@@ -0,0 +1,12 @@
+include(Compiler/Intel)
+__compiler_intel(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.10/Modules/Compiler/Intel-C-FeatureTests.cmake b/share/cmake-3.10/Modules/Compiler/Intel-C-FeatureTests.cmake
new file mode 100644
index 0000000..5d09767
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/Intel-C-FeatureTests.cmake
@@ -0,0 +1,20 @@
+# References:
+#   - https://software.intel.com/en-us/articles/iso-iec-standards-language-conformance-for-intel-c-compiler
+#   - https://software.intel.com/en-us/articles/c99-support-in-intel-c-compiler
+#   - https://software.intel.com/en-us/articles/c11-support-in-intel-c-compiler
+
+set(DETECT_C99 "defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L")
+set(DETECT_C11 "defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L")
+
+#static assert is only around in version 1500 update 2 and above
+set(_cmake_feature_test_c_static_assert "(__INTEL_COMPILER > 1500 || (__INTEL_COMPILER == 1500 && __INTEL_COMPILER_UPDATE > 1) ) && (${DETECT_C11} || ${DETECT_C99} && !defined(_MSC_VER))")
+
+set(_cmake_oldestSupported "__INTEL_COMPILER >= 1110")
+set(Intel_C99 "${_cmake_oldestSupported} && ${DETECT_C99}")
+set(_cmake_feature_test_c_restrict "${Intel_C99}")
+set(_cmake_feature_test_c_variadic_macros "${Intel_C99}")
+set(_cmake_feature_test_c_function_prototypes "${_cmake_oldestSupported}")
+unset(Intel_C99)
+
+unset(DETECT_C99)
+unset(DETECT_C11)
diff --git a/share/cmake-3.10/Modules/Compiler/Intel-C.cmake b/share/cmake-3.10/Modules/Compiler/Intel-C.cmake
new file mode 100644
index 0000000..4e4af29
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/Intel-C.cmake
@@ -0,0 +1,43 @@
+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")
+
+  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")
+  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_C99_STANDARD_COMPILE_OPTION "-Qstd=c99")
+    set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-Qstd=c99")
+  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")
+  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_C99_STANDARD_COMPILE_OPTION "-std=c99")
+    set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=gnu99")
+  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.10/Modules/Compiler/Intel-CXX-FeatureTests.cmake b/share/cmake-3.10/Modules/Compiler/Intel-CXX-FeatureTests.cmake
new file mode 100644
index 0000000..929a7c6
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/Intel-CXX-FeatureTests.cmake
@@ -0,0 +1,115 @@
+# References:
+#   - https://software.intel.com/en-us/articles/c0x-features-supported-by-intel-c-compiler
+#   - https://software.intel.com/en-us/articles/c14-features-supported-by-intel-c-compiler
+#   - http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0096r3.html
+
+# Notes:
+# [1] Some Intel versions define some feature macros under -std=gnu++98
+#     that do not work in that mode (or work with warnings):
+#     - __cpp_attributes 200809
+#     - __cpp_init_captures 201304
+#     - __cpp_lambdas 200907
+#     - __cpp_rvalue_references 200610
+#     - __cpp_variadic_templates 200704
+
+set(_cmake_feature_test_cxx_variable_templates "__cpp_variable_templates >= 201304")
+
+set(_cmake_oldestSupported "__INTEL_COMPILER >= 1210")
+set(DETECT_CXX11 "((__cplusplus >= 201103L) || defined(__INTEL_CXX11_MODE__) || defined(__GXX_EXPERIMENTAL_CXX0X__))")
+#ICC version 15 update 1 has a bug where __cplusplus is defined as 1 no matter
+#if you are compiling as 98/11/14. So to properly detect C++14 with this version
+#we look for the existence of __GXX_EXPERIMENTAL_CXX0X__ but not __INTEL_CXX11_MODE__
+set(DETECT_BUGGY_ICC15 "((__INTEL_COMPILER == 1500) && (__INTEL_COMPILER_UPDATE == 1))")
+set(DETECT_CXX14 "((__cplusplus >= 201300L) || ((__cplusplus == 201103L) && !defined(__INTEL_CXX11_MODE__)) || ((${DETECT_BUGGY_ICC15}) && defined(__GXX_EXPERIMENTAL_CXX0X__) && !defined(__INTEL_CXX11_MODE__) ) || (defined(__INTEL_CXX11_MODE__) && defined(__cpp_aggregate_nsdmi)) )")
+unset(DETECT_BUGGY_ICC15)
+
+set(Intel17_CXX14 "__INTEL_COMPILER >= 1700 && ${DETECT_CXX14}")
+set(_cmake_feature_test_cxx_relaxed_constexpr "__cpp_constexpr >= 201304 || (${Intel17_CXX14} && !defined(_MSC_VER))")
+
+set(Intel16_CXX14 "__INTEL_COMPILER >= 1600 && ${DETECT_CXX14}")
+set(_cmake_feature_test_cxx_aggregate_default_initializers "${Intel16_CXX14}")
+set(_cmake_feature_test_cxx_contextual_conversions "${Intel16_CXX14}")
+set(_cmake_feature_test_cxx_generic_lambdas "__cpp_generic_lambdas >= 201304")
+set(_cmake_feature_test_cxx_digit_separators "${Intel16_CXX14}")
+# This test is supposed to work in Intel 14 but the compiler has a bug
+# in versions 14 and 15::
+# https://software.intel.com/en-us/forums/intel-c-compiler/topic/600514
+# It also appears to fail with an internal compiler error on Intel 16 and 17.
+#set(_cmake_feature_test_cxx_generalized_initializers "${Intel16_CXX14}")
+unset(Intel16_CXX14)
+
+set(Intel15 "__INTEL_COMPILER >= 1500")
+set(Intel15_CXX14 "${Intel15} && ${DETECT_CXX14}")
+set(_cmake_feature_test_cxx_decltype_auto "__cpp_decltype_auto >= 201304 || ${Intel15_CXX14}")
+set(_cmake_feature_test_cxx_lambda_init_captures "(__cpp_init_captures >= 201304 || ${Intel15}) && ${DETECT_CXX14}") # [1]
+set(_cmake_feature_test_cxx_attribute_deprecated "${Intel15_CXX14}")
+set(_cmake_feature_test_cxx_return_type_deduction "__cpp_return_type_deduction >= 201304 || ${Intel15_CXX14}")
+unset(Intel15_CXX14)
+unset(Intel15)
+
+set(Intel15_CXX11 "__INTEL_COMPILER >= 1500 && ${DETECT_CXX11}")
+set(_cmake_feature_test_cxx_alignas "${Intel15_CXX11}")
+set(_cmake_feature_test_cxx_alignof "${Intel15_CXX11}")
+set(_cmake_feature_test_cxx_inheriting_constructors "${Intel15_CXX11}")
+set(_cmake_feature_test_cxx_user_literals "__cpp_user_defined_literals >= 200809 || (${Intel15_CXX11} && (!defined(_MSC_VER) || __INTEL_COMPILER >= 1600))")
+set(_cmake_feature_test_cxx_thread_local "${Intel15_CXX11}")
+unset(Intel15_CXX11)
+
+set(Intel14_CXX11 "${DETECT_CXX11} && (__INTEL_COMPILER > 1400 || (__INTEL_COMPILER == 1400 && __INTEL_COMPILER_UPDATE >= 2))")
+# Documented as 12.0+ but in testing it only works on 14.0.2+
+set(_cmake_feature_test_cxx_decltype_incomplete_return_types "${Intel14_CXX11} && !defined(_MSC_VER)")
+
+set(Intel14_CXX11 "__INTEL_COMPILER >= 1400 && ${DETECT_CXX11}")
+set(_cmake_feature_test_cxx_delegating_constructors "${Intel14_CXX11}")
+set(_cmake_feature_test_cxx_constexpr "__cpp_constexpr >= 200704 || ${Intel14_CXX11}")
+set(_cmake_feature_test_cxx_sizeof_member "${Intel14_CXX11}")
+set(_cmake_feature_test_cxx_strong_enums "${Intel14_CXX11}")
+set(_cmake_feature_test_cxx_reference_qualified_functions "${Intel14_CXX11}")
+set(_cmake_feature_test_cxx_raw_string_literals "__cpp_raw_strings >= 200710 || ${Intel14_CXX11}")
+set(_cmake_feature_test_cxx_unicode_literals "__cpp_unicode_literals >= 200710 || (${Intel14_CXX11} && (!defined(_MSC_VER) || __INTEL_COMPILER >= 1600))")
+set(_cmake_feature_test_cxx_inline_namespaces "${Intel14_CXX11}")
+set(_cmake_feature_test_cxx_unrestricted_unions "${Intel14_CXX11}")
+set(_cmake_feature_test_cxx_nonstatic_member_init "${Intel14_CXX11}")
+set(_cmake_feature_test_cxx_enum_forward_declarations "${Intel14_CXX11}")
+set(_cmake_feature_test_cxx_override "${Intel14_CXX11}")
+set(_cmake_feature_test_cxx_final "${Intel14_CXX11}")
+set(_cmake_feature_test_cxx_noexcept "${Intel14_CXX11}")
+set(_cmake_feature_test_cxx_defaulted_move_initializers "${Intel14_CXX11}")
+unset(Intel14_CXX11)
+
+set(Intel13_CXX11 "__INTEL_COMPILER >= 1300 && ${DETECT_CXX11}")
+set(_cmake_feature_test_cxx_explicit_conversions "${Intel13_CXX11}")
+set(_cmake_feature_test_cxx_range_for "${Intel13_CXX11}")
+# Cannot find Intel documentation for N2640: cxx_uniform_initialization
+set(_cmake_feature_test_cxx_uniform_initialization "${Intel13_CXX11}")
+unset(Intel13_CXX11)
+
+set(Intel121 "${_cmake_oldestSupported}")
+set(Intel121_CXX11 "${Intel121} && ${DETECT_CXX11}")
+set(_cmake_feature_test_cxx_variadic_templates "(__cpp_variadic_templates >= 200704 || ${Intel121}) && ${DETECT_CXX11}") # [1]
+set(_cmake_feature_test_cxx_alias_templates "${Intel121_CXX11}")
+set(_cmake_feature_test_cxx_nullptr "${Intel121_CXX11}")
+set(_cmake_feature_test_cxx_trailing_return_types "${Intel121_CXX11}")
+set(_cmake_feature_test_cxx_attributes "(__cpp_attributes >= 200809 || ${Intel121}) && ${DETECT_CXX11}") # [1]
+set(_cmake_feature_test_cxx_default_function_template_args "${Intel121_CXX11}")
+set(_cmake_feature_test_cxx_extended_friend_declarations "${Intel121_CXX11}")
+set(_cmake_feature_test_cxx_rvalue_references "(__cpp_rvalue_references >= 200610 || ${Intel121}) && ${DETECT_CXX11}") # [1]
+set(_cmake_feature_test_cxx_decltype "__cpp_decltype >= 200707 || ${Intel121_CXX11}")
+set(_cmake_feature_test_cxx_defaulted_functions "${Intel121_CXX11}")
+set(_cmake_feature_test_cxx_deleted_functions "${Intel121_CXX11}")
+set(_cmake_feature_test_cxx_local_type_template_args "${Intel121_CXX11}")
+set(_cmake_feature_test_cxx_lambdas "(__cpp_lambdas >= 200907 || ${Intel121}) && ${DETECT_CXX11}") # [1]
+set(_cmake_feature_test_cxx_binary_literals "__cpp_binary_literals >= 201304 || ${Intel121}")
+set(_cmake_feature_test_cxx_static_assert "(__cpp_static_assert >= 200410 || ${Intel121}) && ${DETECT_CXX11}")
+set(_cmake_feature_test_cxx_right_angle_brackets "${Intel121_CXX11}")
+set(_cmake_feature_test_cxx_auto_type "${Intel121_CXX11}")
+set(_cmake_feature_test_cxx_extern_templates "${Intel121_CXX11}")
+set(_cmake_feature_test_cxx_variadic_macros "${Intel121_CXX11}")
+set(_cmake_feature_test_cxx_long_long_type "${Intel121_CXX11}")
+set(_cmake_feature_test_cxx_func_identifier "${Intel121_CXX11}")
+set(_cmake_feature_test_cxx_template_template_parameters "${Intel121_CXX11}")
+unset(Intel121_CXX11)
+unset(Intel121)
+
+unset(DETECT_CXX11)
+unset(DETECT_CXX14)
diff --git a/share/cmake-3.10/Modules/Compiler/Intel-CXX.cmake b/share/cmake-3.10/Modules/Compiler/Intel-CXX.cmake
new file mode 100644
index 0000000..0eb9e1f
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/Intel-CXX.cmake
@@ -0,0 +1,60 @@
+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")
+
+  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 "")
+  endif()
+
+else()
+
+  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15.0.2)
+    set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++14")
+    # todo: there is no gnu++14 value supported; figure out what to do
+    set(CMAKE_CXX14_EXTENSION_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")
+    # todo: there is no gnu++14 value supported; figure out what to do
+    set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=c++1y")
+  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")
+  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.6/Modules/Compiler/Intel-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/Intel-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/Intel-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/Intel-DetermineCompiler.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/Intel-Fortran.cmake b/share/cmake-3.10/Modules/Compiler/Intel-Fortran.cmake
new file mode 100644
index 0000000..a132055
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/Intel-Fortran.cmake
@@ -0,0 +1,12 @@
+include(Compiler/Intel)
+__compiler_intel(Fortran)
+
+set(CMAKE_Fortran_MODDIR_FLAG "-module ")
+set(CMAKE_Fortran_FORMAT_FIXED_FLAG "-fixed")
+set(CMAKE_Fortran_FORMAT_FREE_FLAG "-free")
+
+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>")
diff --git a/share/cmake-3.10/Modules/Compiler/Intel.cmake b/share/cmake-3.10/Modules/Compiler/Intel.cmake
new file mode 100644
index 0000000..635ac4d
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/Intel.cmake
@@ -0,0 +1,30 @@
+# 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_INTEL)
+  return()
+endif()
+set(__COMPILER_INTEL 1)
+
+include(Compiler/CMakeCommonCompilerMacros)
+
+if(CMAKE_HOST_WIN32)
+  # MSVC-like
+  macro(__compiler_intel lang)
+  endmacro()
+else()
+  # GNU-like
+  macro(__compiler_intel 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}_COMPILER_PREDEFINES_COMMAND "${CMAKE_${lang}_COMPILER}" "-QdM" "-P" "-Za" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp")
+  endmacro()
+endif()
diff --git a/share/cmake-3.6/Modules/Compiler/MIPSpro-C.cmake b/share/cmake-3.10/Modules/Compiler/MIPSpro-C.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/MIPSpro-C.cmake
rename to share/cmake-3.10/Modules/Compiler/MIPSpro-C.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/MIPSpro-CXX.cmake b/share/cmake-3.10/Modules/Compiler/MIPSpro-CXX.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/MIPSpro-CXX.cmake
rename to share/cmake-3.10/Modules/Compiler/MIPSpro-CXX.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/MIPSpro-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/MIPSpro-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/MIPSpro-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/MIPSpro-DetermineCompiler.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/MIPSpro-Fortran.cmake b/share/cmake-3.10/Modules/Compiler/MIPSpro-Fortran.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/MIPSpro-Fortran.cmake
rename to share/cmake-3.10/Modules/Compiler/MIPSpro-Fortran.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/MSVC-CXX-FeatureTests.cmake b/share/cmake-3.10/Modules/Compiler/MSVC-CXX-FeatureTests.cmake
new file mode 100644
index 0000000..5969586
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/MSVC-CXX-FeatureTests.cmake
@@ -0,0 +1,117 @@
+
+# Reference: http://msdn.microsoft.com/en-us/library/vstudio/hh567368.aspx
+# http://blogs.msdn.com/b/vcblog/archive/2013/06/28/c-11-14-stl-features-fixes-and-breaking-changes-in-vs-2013.aspx
+# http://blogs.msdn.com/b/vcblog/archive/2014/11/17/c-11-14-17-features-in-vs-2015-preview.aspx
+# http://www.visualstudio.com/en-us/news/vs2015-preview-vs.aspx
+# http://blogs.msdn.com/b/vcblog/archive/2015/04/29/c-11-14-17-features-in-vs-2015-rc.aspx
+# http://blogs.msdn.com/b/vcblog/archive/2015/06/19/c-11-14-17-features-in-vs-2015-rtm.aspx
+
+
+set(_cmake_oldestSupported "_MSC_VER >= 1600")
+
+# VS version 15 (not 2015) introduces support for aggregate initializers.
+set(_cmake_feature_test_cxx_aggregate_default_initializers "_MSC_FULL_VER >= 190024406")
+
+# VS 2015 Update 2 introduces support for variable templates.
+# https://www.visualstudio.com/en-us/news/vs2015-update2-vs.aspx
+set(_cmake_feature_test_cxx_variable_templates "_MSC_FULL_VER >= 190023918")
+
+set(MSVC_2015 "_MSC_VER >= 1900")
+set(_cmake_feature_test_cxx_alignas "${MSVC_2015}")
+set(_cmake_feature_test_cxx_alignof "${MSVC_2015}")
+set(_cmake_feature_test_cxx_attributes "${MSVC_2015}")
+set(_cmake_feature_test_cxx_attribute_deprecated "${MSVC_2015}")
+set(_cmake_feature_test_cxx_binary_literals "${MSVC_2015}")
+set(_cmake_feature_test_cxx_constexpr "${MSVC_2015}")
+set(_cmake_feature_test_cxx_decltype_auto "${MSVC_2015}")
+set(_cmake_feature_test_cxx_digit_separators "${MSVC_2015}")
+set(_cmake_feature_test_cxx_func_identifier "${MSVC_2015}")
+set(_cmake_feature_test_cxx_nonstatic_member_init "${MSVC_2015}")
+# Microsoft calls this 'rvalue references v3'
+set(_cmake_feature_test_cxx_defaulted_move_initializers "${MSVC_2015}")
+set(_cmake_feature_test_cxx_generic_lambdas "${MSVC_2015}")
+set(_cmake_feature_test_cxx_inheriting_constructors "${MSVC_2015}")
+set(_cmake_feature_test_cxx_inline_namespaces "${MSVC_2015}")
+set(_cmake_feature_test_cxx_lambda_init_captures "${MSVC_2015}")
+set(_cmake_feature_test_cxx_noexcept "${MSVC_2015}")
+set(_cmake_feature_test_cxx_return_type_deduction "${MSVC_2015}")
+set(_cmake_feature_test_cxx_sizeof_member "${MSVC_2015}")
+set(_cmake_feature_test_cxx_thread_local "${MSVC_2015}")
+set(_cmake_feature_test_cxx_unicode_literals "${MSVC_2015}")
+set(_cmake_feature_test_cxx_unrestricted_unions "${MSVC_2015}")
+set(_cmake_feature_test_cxx_user_literals "${MSVC_2015}")
+set(_cmake_feature_test_cxx_reference_qualified_functions "${MSVC_2015}")
+# "The copies and moves don't interact precisely like the Standard says they
+# should. For example, deletion of moves is specified to also suppress
+# copies, but Visual C++ in Visual Studio 2013 does not."
+# http://blogs.msdn.com/b/vcblog/archive/2014/11/17/c-11-14-17-features-in-vs-2015-preview.aspx
+# lists this as 'partial' in 2013
+set(_cmake_feature_test_cxx_deleted_functions "${MSVC_2015}")
+
+set(MSVC_2013_v30723 "_MSC_FULL_VER >= 180030723")
+# http://blogs.msdn.com/b/vcblog/archive/2014/11/17/c-11-14-17-features-in-vs-2015-preview.aspx
+# Note 1. While previous version of VisualStudio said they supported these
+# they silently produced bad code, and are now marked as having partial
+# support in previous versions. The footnote says the support will be complete
+# in MSVC 2015, so support the feature for that version, assuming that is true.
+# The blog post also says that VS 2013 Update 3 generates an error in cases
+# that previously produced bad code.
+set(_cmake_feature_test_cxx_generalized_initializers "${MSVC_2013_v30723}")
+
+set(MSVC_2013 "_MSC_VER >= 1800")
+set(_cmake_feature_test_cxx_alias_templates "${MSVC_2013}")
+# Microsoft now states they support contextual conversions in 2013 and above.
+# See footnote 6 at:
+# http://blogs.msdn.com/b/vcblog/archive/2014/11/17/c-11-14-17-features-in-vs-2015-preview.aspx
+set(_cmake_feature_test_cxx_contextual_conversions "${MSVC_2013}")
+set(_cmake_feature_test_cxx_default_function_template_args "${MSVC_2013}")
+set(_cmake_feature_test_cxx_defaulted_functions "${MSVC_2013}")
+set(_cmake_feature_test_cxx_delegating_constructors "${MSVC_2013}")
+set(_cmake_feature_test_cxx_explicit_conversions "${MSVC_2013}")
+set(_cmake_feature_test_cxx_raw_string_literals "${MSVC_2013}")
+set(_cmake_feature_test_cxx_uniform_initialization "${MSVC_2013}")
+# Support is documented, but possibly partly broken:
+# https://msdn.microsoft.com/en-us/library/hh567368.aspx
+# http://thread.gmane.org/gmane.comp.lib.boost.devel/244986/focus=245333
+set(_cmake_feature_test_cxx_variadic_templates "${MSVC_2013}")
+
+set(MSVC_2012 "_MSC_VER >= 1700")
+set(_cmake_feature_test_cxx_enum_forward_declarations "${MSVC_2012}")
+set(_cmake_feature_test_cxx_final "${MSVC_2012}")
+set(_cmake_feature_test_cxx_range_for "${MSVC_2012}")
+set(_cmake_feature_test_cxx_strong_enums "${MSVC_2012}")
+
+set(MSVC_2010 "_MSC_VER >= 1600")
+set(_cmake_feature_test_cxx_auto_type "${MSVC_2010}")
+set(_cmake_feature_test_cxx_decltype "${MSVC_2010}")
+set(_cmake_feature_test_cxx_extended_friend_declarations "${MSVC_2010}")
+set(_cmake_feature_test_cxx_extern_templates "${MSVC_2010}")
+set(_cmake_feature_test_cxx_lambdas "${MSVC_2010}")
+set(_cmake_feature_test_cxx_local_type_template_args "${MSVC_2010}")
+set(_cmake_feature_test_cxx_long_long_type "${MSVC_2010}")
+set(_cmake_feature_test_cxx_nullptr "${MSVC_2010}")
+set(_cmake_feature_test_cxx_override "${MSVC_2010}")
+set(_cmake_feature_test_cxx_right_angle_brackets "${MSVC_2010}")
+set(_cmake_feature_test_cxx_rvalue_references "${MSVC_2010}")
+set(_cmake_feature_test_cxx_static_assert "${MSVC_2010}")
+set(_cmake_feature_test_cxx_template_template_parameters "${MSVC_2010}")
+set(_cmake_feature_test_cxx_trailing_return_types "${MSVC_2010}")
+set(_cmake_feature_test_cxx_variadic_macros "${MSVC_2010}")
+
+# Currently unsupported:
+# set(_cmake_feature_test_cxx_relaxed_constexpr )
+# 'NSDMIs for aggregates'
+# set(_cmake_feature_test_cxx_aggregate_default_initializers )
+
+# In theory decltype incomplete return types was added in 2012
+# but without support for decltype_auto and return type deduction this
+# feature is unusable.  This remains so as of VS 2015 Preview.
+# set(_cmake_feature_test_cxx_decltype_incomplete_return_types )
+
+# Unset all the variables that we don't need exposed.
+# _cmake_oldestSupported is required by WriteCompilerDetectionHeader
+set(MSVC_2015)
+set(MSVC_2013_v30723)
+set(MSVC_2013)
+set(MSVC_2012)
+set(MSVC_2010)
diff --git a/share/cmake-3.10/Modules/Compiler/MSVC-CXX.cmake b/share/cmake-3.10/Modules/Compiler/MSVC-CXX.cmake
new file mode 100644
index 0000000..789fff5
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/MSVC-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/CMakeCommonCompilerMacros)
+
+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_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_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()
+
+  __compiler_check_default_language_standard(CXX 19.0 14)
+
+  # All features that we define are available in the base mode, except
+  # for meta-features for C++14 and above.  Override the default macro
+  # to avoid doing unnecessary work.
+  macro(cmake_record_cxx_compile_features)
+    list(APPEND CMAKE_CXX17_COMPILE_FEATURES cxx_std_17)
+    list(APPEND CMAKE_CXX14_COMPILE_FEATURES cxx_std_14)
+    list(APPEND CMAKE_CXX98_COMPILE_FEATURES cxx_std_11) # no flag needed for 11
+    _record_compiler_features_cxx(98)
+  endmacro()
+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 "")
+
+  # 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
+      )
+    _record_compiler_features(CXX "" CMAKE_CXX_COMPILE_FEATURES)
+  endmacro()
+endif()
diff --git a/share/cmake-3.6/Modules/Compiler/MSVC-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/MSVC-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/MSVC-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/MSVC-DetermineCompiler.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/NAG-Fortran.cmake b/share/cmake-3.10/Modules/Compiler/NAG-Fortran.cmake
new file mode 100644
index 0000000..39aae18
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/NAG-Fortran.cmake
@@ -0,0 +1,36 @@
+# Help CMAKE_PARSE_IMPLICIT_LINK_INFO detect NAG Fortran object files.
+if(NOT CMAKE_Fortran_COMPILER_WORKS AND NOT CMAKE_Fortran_COMPILER_FORCED)
+  message(STATUS "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(STATUS "Detecting NAG Fortran directory - ${_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(STATUS "Detecting NAG Fortran directory - failed")
+  endif()
+endif()
+
+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")
diff --git a/share/cmake-3.10/Modules/Compiler/NVIDIA-CUDA.cmake b/share/cmake-3.10/Modules/Compiler/NVIDIA-CUDA.cmake
new file mode 100644
index 0000000..1c91654
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/NVIDIA-CUDA.cmake
@@ -0,0 +1,35 @@
+set(CMAKE_CUDA_VERBOSE_FLAG "-v")
+
+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("x${CMAKE_CUDA_SIMULATE_ID}" STREQUAL "xMSVC")
+  set(CMAKE_CUDA_STANDARD_DEFAULT "")
+else()
+  set(CMAKE_CUDA_STANDARD_DEFAULT 98)
+  set(CMAKE_CUDA98_STANDARD_COMPILE_OPTION "")
+  set(CMAKE_CUDA98_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_CUDA98_STANDARD_COMPILE_OPTION "-std=c++03")
+    set(CMAKE_CUDA98_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()
+
+endif()
diff --git a/share/cmake-3.10/Modules/Compiler/NVIDIA-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/NVIDIA-DetermineCompiler.cmake
new file mode 100644
index 0000000..cb0beaf
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/NVIDIA-DetermineCompiler.cmake
@@ -0,0 +1,17 @@
+
+set(_compiler_id_pp_test "defined(__NVCC__)")
+
+set(_compiler_id_version_compute "
+# define @PREFIX@COMPILER_VERSION_MAJOR @MACRO_DEC@(__CUDACC_VER_MAJOR__)
+# define @PREFIX@COMPILER_VERSION_MINOR @MACRO_DEC@(__CUDACC_VER_MINOR__)
+# define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@(__CUDACC_VER_BUILD__)
+# 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")
+
+set(_compiler_id_simulate "
+# if defined(_MSC_VER)
+#  define @PREFIX@SIMULATE_ID \"MSVC\"
+# endif")
diff --git a/share/cmake-3.6/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/PGI-C.cmake b/share/cmake-3.10/Modules/Compiler/PGI-C.cmake
new file mode 100644
index 0000000..3b3848a
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/PGI-C.cmake
@@ -0,0 +1,17 @@
+include(Compiler/PGI)
+__compiler_pgi(C)
+string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
+string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -DNDEBUG")
+
+if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12.10)
+  set(CMAKE_C90_STANDARD_COMPILE_OPTION -c89)
+  set(CMAKE_C90_EXTENSION_COMPILE_OPTION -c89)
+  set(CMAKE_C99_STANDARD_COMPILE_OPTION -c99)
+  set(CMAKE_C99_EXTENSION_COMPILE_OPTION -c99)
+  if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 15.3)
+    set(CMAKE_C11_STANDARD_COMPILE_OPTION -c11)
+    set(CMAKE_C11_EXTENSION_COMPILE_OPTION -c11)
+  endif ()
+endif ()
+
+__compiler_check_default_language_standard(C 12.10 90)
diff --git a/share/cmake-3.10/Modules/Compiler/PGI-CXX.cmake b/share/cmake-3.10/Modules/Compiler/PGI-CXX.cmake
new file mode 100644
index 0000000..35076bb
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/PGI-CXX.cmake
@@ -0,0 +1,23 @@
+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)
+  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)
+    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)
+      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)
+      endif()
+    endif()
+  endif()
+endif()
+
+__compiler_check_default_language_standard(CXX 12.10 98)
diff --git a/share/cmake-3.6/Modules/Compiler/PGI-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/PGI-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/PGI-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/PGI-DetermineCompiler.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/PGI-Fortran.cmake b/share/cmake-3.10/Modules/Compiler/PGI-Fortran.cmake
new file mode 100644
index 0000000..a183c33
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/PGI-Fortran.cmake
@@ -0,0 +1,12 @@
+include(Compiler/PGI)
+__compiler_pgi(Fortran)
+
+set(CMAKE_Fortran_PREPROCESS_SOURCE
+  "<CMAKE_Fortran_COMPILER> -Mpreprocess <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
+
+set(CMAKE_Fortran_FORMAT_FIXED_FLAG "-Mnofreeform")
+set(CMAKE_Fortran_FORMAT_FREE_FLAG "-Mfreeform")
+
+string(APPEND CMAKE_Fortran_FLAGS_DEBUG_INIT " -Mbounds")
+
+set(CMAKE_Fortran_MODDIR_FLAG "-module ")
diff --git a/share/cmake-3.10/Modules/Compiler/PGI.cmake b/share/cmake-3.10/Modules/Compiler/PGI.cmake
new file mode 100644
index 0000000..d5a57ee
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/PGI.cmake
@@ -0,0 +1,39 @@
+# 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}_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.10/Modules/Compiler/PathScale-C.cmake b/share/cmake-3.10/Modules/Compiler/PathScale-C.cmake
new file mode 100644
index 0000000..94c7d08
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/PathScale-C.cmake
@@ -0,0 +1,4 @@
+include(Compiler/PathScale)
+__compiler_pathscale(C)
+string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
+string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -DNDEBUG")
diff --git a/share/cmake-3.10/Modules/Compiler/PathScale-CXX.cmake b/share/cmake-3.10/Modules/Compiler/PathScale-CXX.cmake
new file mode 100644
index 0000000..276b81b
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/PathScale-CXX.cmake
@@ -0,0 +1,4 @@
+include(Compiler/PathScale)
+__compiler_pathscale(CXX)
+string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
+string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " -DNDEBUG")
diff --git a/share/cmake-3.6/Modules/Compiler/PathScale-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/PathScale-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/PathScale-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/PathScale-DetermineCompiler.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/PathScale-Fortran.cmake b/share/cmake-3.10/Modules/Compiler/PathScale-Fortran.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/PathScale-Fortran.cmake
rename to share/cmake-3.10/Modules/Compiler/PathScale-Fortran.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/PathScale.cmake b/share/cmake-3.10/Modules/Compiler/PathScale.cmake
new file mode 100644
index 0000000..d5f8cb1
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/PathScale.cmake
@@ -0,0 +1,21 @@
+# 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_PATHSCALE)
+  return()
+endif()
+set(__COMPILER_PATHSCALE 1)
+
+macro(__compiler_pathscale 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 " -Os")
+  string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O3")
+  string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -g -O2")
+endmacro()
diff --git a/share/cmake-3.6/Modules/Compiler/QCC-C.cmake b/share/cmake-3.10/Modules/Compiler/QCC-C.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/QCC-C.cmake
rename to share/cmake-3.10/Modules/Compiler/QCC-C.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/QCC-CXX.cmake b/share/cmake-3.10/Modules/Compiler/QCC-CXX.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/QCC-CXX.cmake
rename to share/cmake-3.10/Modules/Compiler/QCC-CXX.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/QCC.cmake b/share/cmake-3.10/Modules/Compiler/QCC.cmake
new file mode 100644
index 0000000..0da7050
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/QCC.cmake
@@ -0,0 +1,23 @@
+# 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_INCLUDE_SYSTEM_FLAG_${lang} "-Wp,-isystem,")
+  set(CMAKE_DEPFILE_FLAGS_${lang} "-Wc,-MD,<DEPFILE>,-MT,<OBJECT>,-MF,<DEPFILE>")
+
+  set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE NO)
+  set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER NO)
+
+  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.6/Modules/Compiler/SCO-C.cmake b/share/cmake-3.10/Modules/Compiler/SCO-C.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/SCO-C.cmake
rename to share/cmake-3.10/Modules/Compiler/SCO-C.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/SCO-CXX.cmake b/share/cmake-3.10/Modules/Compiler/SCO-CXX.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/SCO-CXX.cmake
rename to share/cmake-3.10/Modules/Compiler/SCO-CXX.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/SCO-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/SCO-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/SCO-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/SCO-DetermineCompiler.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/SCO.cmake b/share/cmake-3.10/Modules/Compiler/SCO.cmake
new file mode 100644
index 0000000..c55a048
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/SCO.cmake
@@ -0,0 +1,18 @@
+# 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_SCO)
+  return()
+endif()
+set(__COMPILER_SCO 1)
+
+macro(__compiler_sco lang)
+  # Feature flags.
+  set(CMAKE_${lang}_COMPILE_OPTIONS_PIC -Kpic)
+  set(CMAKE_${lang}_COMPILE_OPTIONS_PIE -Kpie)
+  set(CMAKE_${lang}_COMPILE_OPTIONS_DLL -belf)
+  set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "-Kpic -belf")
+  set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-belf -Wl,-Bexport")
+endmacro()
diff --git a/share/cmake-3.10/Modules/Compiler/SDCC-C-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/SDCC-C-DetermineCompiler.cmake
new file mode 100644
index 0000000..4c70c5e
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/SDCC-C-DetermineCompiler.cmake
@@ -0,0 +1,16 @@
+
+# sdcc, the small devices C compiler for embedded systems,
+#   http://sdcc.sourceforge.net  */
+set(_compiler_id_pp_test "defined(__SDCC_VERSION_MAJOR) || defined(SDCC)")
+
+set(_compiler_id_version_compute "
+# if defined(__SDCC_VERSION_MAJOR)
+#  define COMPILER_VERSION_MAJOR @MACRO_DEC@(__SDCC_VERSION_MAJOR)
+#  define COMPILER_VERSION_MINOR @MACRO_DEC@(__SDCC_VERSION_MINOR)
+#  define COMPILER_VERSION_PATCH @MACRO_DEC@(__SDCC_VERSION_PATCH)
+# else
+  /* SDCC = VRP */
+#  define COMPILER_VERSION_MAJOR @MACRO_DEC@(SDCC/100)
+#  define COMPILER_VERSION_MINOR @MACRO_DEC@(SDCC/10 % 10)
+#  define COMPILER_VERSION_PATCH @MACRO_DEC@(SDCC    % 10)
+# endif")
diff --git a/share/cmake-3.10/Modules/Compiler/SunPro-ASM.cmake b/share/cmake-3.10/Modules/Compiler/SunPro-ASM.cmake
new file mode 100644
index 0000000..0d67400
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/SunPro-ASM.cmake
@@ -0,0 +1,24 @@
+set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS s )
+
+set(CMAKE_ASM_VERBOSE_FLAG "-#")
+
+set(CMAKE_SHARED_LIBRARY_ASM_FLAGS "-KPIC")
+set(CMAKE_SHARED_LIBRARY_CREATE_ASM_FLAGS "-G")
+set(CMAKE_SHARED_LIBRARY_RUNTIME_ASM_FLAG "-R")
+set(CMAKE_SHARED_LIBRARY_RUNTIME_ASM_FLAG_SEP ":")
+set(CMAKE_SHARED_LIBRARY_SONAME_ASM_FLAG "-h")
+
+string(APPEND CMAKE_ASM_FLAGS_INIT " ")
+string(APPEND CMAKE_ASM_FLAGS_DEBUG_INIT " -g")
+string(APPEND CMAKE_ASM_FLAGS_MINSIZEREL_INIT " -xO2 -xspace -DNDEBUG")
+string(APPEND CMAKE_ASM_FLAGS_RELEASE_INIT " -xO3 -DNDEBUG")
+string(APPEND CMAKE_ASM_FLAGS_RELWITHDEBINFO_INIT " -g -xO2 -DNDEBUG")
+
+# Initialize ASM 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_ASM_FLAGS "-Bstatic")
+  set(CMAKE_${type}_LINK_DYNAMIC_ASM_FLAGS "-Bdynamic")
+endforeach()
diff --git a/share/cmake-3.6/Modules/Compiler/SunPro-C-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/SunPro-C-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/SunPro-C-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/SunPro-C-DetermineCompiler.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/SunPro-C-FeatureTests.cmake b/share/cmake-3.10/Modules/Compiler/SunPro-C-FeatureTests.cmake
new file mode 100644
index 0000000..cccf3ae
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/SunPro-C-FeatureTests.cmake
@@ -0,0 +1,14 @@
+set(_cmake_oldestSupported "__SUNPRO_C >= 0x5130")
+
+set(SunPro_C11 "${_cmake_oldestSupported} && defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L || __STDC_VERSION__ >= 199901L && defined(__C11FEATURES__))")
+set(_cmake_feature_test_c_static_assert "${SunPro_C11}")
+unset(SunPro_C11)
+
+set(SunPro_C99 "${_cmake_oldestSupported} && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L")
+set(_cmake_feature_test_c_restrict "${SunPro_C99}")
+set(_cmake_feature_test_c_variadic_macros "${SunPro_C99}")
+unset(SunPro_C99)
+
+set(SunPro_C90 "${_cmake_oldestSupported}")
+set(_cmake_feature_test_c_function_prototypes "${SunPro_C90}")
+unset(SunPro_C90)
diff --git a/share/cmake-3.10/Modules/Compiler/SunPro-C.cmake b/share/cmake-3.10/Modules/Compiler/SunPro-C.cmake
new file mode 100644
index 0000000..29c2f22
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/SunPro-C.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/SunPro)
+
+set(CMAKE_C_VERBOSE_FLAG "-#")
+
+set(CMAKE_C_COMPILE_OPTIONS_PIC -KPIC)
+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")
+
+# 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()
+
+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_C99_STANDARD_COMPILE_OPTION "-std=c99")
+  set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=c99")
+  set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
+  set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=c11")
+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.6/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/SunPro-CXX-FeatureTests.cmake b/share/cmake-3.10/Modules/Compiler/SunPro-CXX-FeatureTests.cmake
new file mode 100644
index 0000000..60280ca
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/SunPro-CXX-FeatureTests.cmake
@@ -0,0 +1,56 @@
+
+# Based on GNU 4.8.2
+# http://docs.oracle.com/cd/E37069_01/html/E37071/gncix.html
+# Reference: http://gcc.gnu.org/projects/cxx0x.html
+
+set(_cmake_oldestSupported "__SUNPRO_CC >= 0x5130")
+
+set(SolarisStudio125_CXX11 "(__SUNPRO_CC >= 0x5140) && __cplusplus >= 201103L")
+set(_cmake_feature_test_cxx_binary_literals "${SolarisStudio125_CXX11}")
+set(_cmake_feature_test_cxx_reference_qualified_functions "${SolarisStudio125_CXX11}")
+
+set(SolarisStudio124_CXX11 "(__SUNPRO_CC >= 0x5130) && __cplusplus >= 201103L")
+set(_cmake_feature_test_cxx_alignas "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_alignof "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_attributes "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_inheriting_constructors "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_thread_local "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_alias_templates "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_delegating_constructors "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_extended_friend_declarations "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_final "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_noexcept "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_nonstatic_member_init "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_override "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_constexpr "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_defaulted_move_initializers "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_enum_forward_declarations "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_nullptr "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_range_for "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_unrestricted_unions "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_explicit_conversions "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_lambdas "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_local_type_template_args "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_raw_string_literals "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_auto_type "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_defaulted_functions "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_deleted_functions "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_generalized_initializers "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_inline_namespaces "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_sizeof_member "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_strong_enums "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_trailing_return_types "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_unicode_literals "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_uniform_initialization "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_variadic_templates "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_decltype "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_default_function_template_args "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_long_long_type "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_right_angle_brackets "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_rvalue_references "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_static_assert "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_extern_templates "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_func_identifier "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_variadic_macros "${SolarisStudio124_CXX11}")
+
+set(_cmake_feature_test_cxx_template_template_parameters "${_cmake_oldestSupported} && __cplusplus")
diff --git a/share/cmake-3.10/Modules/Compiler/SunPro-CXX.cmake b/share/cmake-3.10/Modules/Compiler/SunPro-CXX.cmake
new file mode 100644
index 0000000..5cb7edc
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/SunPro-CXX.cmake
@@ -0,0 +1,51 @@
+# 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_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")
+
+# 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_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_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)
+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.10/Modules/Compiler/SunPro-Fortran.cmake b/share/cmake-3.10/Modules/Compiler/SunPro-Fortran.cmake
new file mode 100644
index 0000000..9b25c0b
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/SunPro-Fortran.cmake
@@ -0,0 +1,25 @@
+set(CMAKE_Fortran_VERBOSE_FLAG "-v")
+set(CMAKE_Fortran_FORMAT_FIXED_FLAG "-fixed")
+set(CMAKE_Fortran_FORMAT_FREE_FLAG "-free")
+
+set(CMAKE_Fortran_COMPILE_OPTIONS_PIC "-KPIC")
+set(CMAKE_SHARED_LIBRARY_Fortran_FLAGS "-KPIC")
+set(CMAKE_SHARED_LIBRARY_CREATE_Fortran_FLAGS "-G")
+set(CMAKE_SHARED_LIBRARY_RUNTIME_Fortran_FLAG "-R")
+set(CMAKE_SHARED_LIBRARY_RUNTIME_Fortran_FLAG_SEP ":")
+set(CMAKE_SHARED_LIBRARY_SONAME_Fortran_FLAG "-h")
+set(CMAKE_EXECUTABLE_RUNTIME_Fortran_FLAG "-R")
+
+string(APPEND CMAKE_Fortran_FLAGS_INIT " ")
+string(APPEND CMAKE_Fortran_FLAGS_DEBUG_INIT " -g")
+string(APPEND CMAKE_Fortran_FLAGS_MINSIZEREL_INIT " -xO2 -xspace -DNDEBUG")
+string(APPEND CMAKE_Fortran_FLAGS_RELEASE_INIT " -xO3 -DNDEBUG")
+string(APPEND CMAKE_Fortran_FLAGS_RELWITHDEBINFO_INIT " -g -xO2 -DNDEBUG")
+set(CMAKE_Fortran_MODDIR_FLAG "-moddir=")
+set(CMAKE_Fortran_MODPATH_FLAG "-M")
+
+set(CMAKE_Fortran_PREPROCESS_SOURCE
+  "<CMAKE_Fortran_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -F -fpp <SOURCE> -o <PREPROCESSED_SOURCE>")
+
+set(CMAKE_Fortran_CREATE_PREPROCESSED_SOURCE "<CMAKE_Fortran_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -F -fpp <SOURCE> -o <PREPROCESSED_SOURCE>")
+set(CMAKE_Fortran_CREATE_ASSEMBLY_SOURCE "<CMAKE_Fortran_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
diff --git a/share/cmake-3.10/Modules/Compiler/SunPro.cmake b/share/cmake-3.10/Modules/Compiler/SunPro.cmake
new file mode 100644
index 0000000..52da39a
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/SunPro.cmake
@@ -0,0 +1,10 @@
+# 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_SUNPRO)
+  return()
+endif()
+set(__COMPILER_SUNPRO 1)
+
+include(Compiler/CMakeCommonCompilerMacros)
diff --git a/share/cmake-3.6/Modules/Compiler/TI-ASM.cmake b/share/cmake-3.10/Modules/Compiler/TI-ASM.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/TI-ASM.cmake
rename to share/cmake-3.10/Modules/Compiler/TI-ASM.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/TI-C.cmake b/share/cmake-3.10/Modules/Compiler/TI-C.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/TI-C.cmake
rename to share/cmake-3.10/Modules/Compiler/TI-C.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/TI-CXX.cmake b/share/cmake-3.10/Modules/Compiler/TI-CXX.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/TI-CXX.cmake
rename to share/cmake-3.10/Modules/Compiler/TI-CXX.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/TI-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/TI-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/TI-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/TI-DetermineCompiler.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/TinyCC-C.cmake b/share/cmake-3.10/Modules/Compiler/TinyCC-C.cmake
new file mode 100644
index 0000000..fbd2841
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/TinyCC-C.cmake
@@ -0,0 +1,8 @@
+set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-shared")
+
+# no optimization in tcc:
+string(APPEND CMAKE_C_FLAGS_INIT " ")
+string(APPEND CMAKE_C_FLAGS_DEBUG_INIT " -g")
+string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
+string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -DNDEBUG")
+string(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO_INIT " -g -DNDEBUG")
diff --git a/share/cmake-3.6/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/VisualAge-C.cmake b/share/cmake-3.10/Modules/Compiler/VisualAge-C.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/VisualAge-C.cmake
rename to share/cmake-3.10/Modules/Compiler/VisualAge-C.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/VisualAge-CXX.cmake b/share/cmake-3.10/Modules/Compiler/VisualAge-CXX.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/VisualAge-CXX.cmake
rename to share/cmake-3.10/Modules/Compiler/VisualAge-CXX.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/VisualAge-Fortran.cmake b/share/cmake-3.10/Modules/Compiler/VisualAge-Fortran.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/VisualAge-Fortran.cmake
rename to share/cmake-3.10/Modules/Compiler/VisualAge-Fortran.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/Watcom-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/Watcom-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/Watcom-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/Watcom-DetermineCompiler.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/XL-ASM.cmake b/share/cmake-3.10/Modules/Compiler/XL-ASM.cmake
new file mode 100644
index 0000000..9177b39
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/XL-ASM.cmake
@@ -0,0 +1,12 @@
+set(CMAKE_ASM_VERBOSE_FLAG "-V")
+
+# -qthreaded     = Ensures that all optimizations will be thread-safe
+# -qhalt=e       = Halt on error messages (rather than just severe errors)
+string(APPEND CMAKE_ASM_FLAGS_INIT " -qthreaded -qhalt=e -qsourcetype=assembler")
+
+string(APPEND CMAKE_ASM_FLAGS_DEBUG_INIT " -g")
+string(APPEND CMAKE_ASM_FLAGS_RELEASE_INIT " -O -DNDEBUG")
+string(APPEND CMAKE_ASM_FLAGS_MINSIZEREL_INIT " -O -DNDEBUG")
+string(APPEND CMAKE_ASM_FLAGS_RELWITHDEBINFO_INIT " -g -DNDEBUG")
+
+set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS s )
diff --git a/share/cmake-3.6/Modules/Compiler/XL-C-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/XL-C-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/XL-C-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/XL-C-DetermineCompiler.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/XL-C.cmake b/share/cmake-3.10/Modules/Compiler/XL-C.cmake
new file mode 100644
index 0000000..5dc8bc1
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/XL-C.cmake
@@ -0,0 +1,41 @@
+include(Compiler/XL)
+__compiler_xl(C)
+string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -DNDEBUG")
+string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
+
+# -qthreaded = Ensures that all optimizations will be thread-safe
+string(APPEND CMAKE_C_FLAGS_INIT " -qthreaded")
+
+# XL v13.1.1 for Linux ppc64 little-endian switched to using a clang based
+# front end and accepts the -std= option while only reserving -qlanglevel= for
+# compatibility.  All other versions (previous versions on Linux ppc64
+# little-endian, all versions on Linux ppc64 big-endian, all versions on AIX
+# and BGQ, etc) are derived from the UNIX compiler and only accept the
+# -qlanglvl option.
+if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 10.1)
+  if (CMAKE_SYSTEM MATCHES "Linux.*ppc64le" AND
+      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_C99_STANDARD_COMPILE_OPTION  "-std=c99")
+    set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=gnu99")
+    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")
+    else ()
+      set(CMAKE_C11_STANDARD_COMPILE_OPTION "-qlanglvl=extc1x")
+      set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-qlanglvl=extc1x")
+    endif ()
+  else ()
+    set(CMAKE_C90_STANDARD_COMPILE_OPTION "-qlanglvl=stdc89")
+    set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-qlanglvl=extc89")
+    set(CMAKE_C99_STANDARD_COMPILE_OPTION "-qlanglvl=stdc99")
+    set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-qlanglvl=extc99")
+    if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12.1)
+      set(CMAKE_C11_STANDARD_COMPILE_OPTION "-qlanglvl=extc1x")
+      set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-qlanglvl=extc1x")
+    endif ()
+  endif ()
+endif()
+
+__compiler_check_default_language_standard(C 10.1 90)
diff --git a/share/cmake-3.6/Modules/Compiler/XL-CXX-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/XL-CXX-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/XL-CXX-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/XL-CXX-DetermineCompiler.cmake
diff --git a/share/cmake-3.10/Modules/Compiler/XL-CXX.cmake b/share/cmake-3.10/Modules/Compiler/XL-CXX.cmake
new file mode 100644
index 0000000..b87e923
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/XL-CXX.cmake
@@ -0,0 +1,49 @@
+include(Compiler/XL)
+__compiler_xl(CXX)
+string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " -DNDEBUG")
+string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
+
+# -qthreaded = Ensures that all optimizations will be thread-safe
+string(APPEND CMAKE_CXX_FLAGS_INIT " -qthreaded")
+
+# XL v13.1.1 for Linux ppc64 little-endian switched to using a clang based
+# front end and accepts the -std= option while only reserving -qlanglevel= for
+# compatibility.  All other versions (previous versions on Linux ppc64
+# little-endian, all versions on Linux ppc64 big-endian, all versions on AIX
+# and BGQ, etc) are derived from the UNIX compiler and only accept the
+# -qlanglvl option.
+if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10.1)
+  if (CMAKE_SYSTEM MATCHES "Linux.*ppc64")
+    if (CMAKE_SYSTEM MATCHES "Linux.*ppc64le" AND
+        CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13.1.1)
+      set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-std=c++98")
+      set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-std=gnu++98")
+      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 "-qlanglvl=extended1y")
+      else ()
+        set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-qlanglvl=extended0x")
+        set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-qlanglvl=extended0x")
+      endif ()
+    else ()
+      # The non-clang based Linux ppc64 compiler, both big-endian and
+      # little-endian lacks, the non-extension language level flags
+      set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-qlanglvl=extended")
+      set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-qlanglvl=extended")
+      set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-qlanglvl=extended0x")
+      set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-qlanglvl=extended0x")
+    endif ()
+  else ()
+    set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-qlanglvl=strict98")
+    set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-qlanglvl=extended")
+    set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-qlanglvl=extended0x")
+    set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-qlanglvl=extended0x")
+  endif ()
+endif ()
+
+__compiler_check_default_language_standard(CXX 10.1 98)
+
+set(CMAKE_CXX_COMPILE_OBJECT
+  "<CMAKE_CXX_COMPILER> -+ <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> -c <SOURCE>")
diff --git a/share/cmake-3.10/Modules/Compiler/XL-Fortran.cmake b/share/cmake-3.10/Modules/Compiler/XL-Fortran.cmake
new file mode 100644
index 0000000..6bab6f6
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/XL-Fortran.cmake
@@ -0,0 +1,17 @@
+include(Compiler/XL)
+__compiler_xl(Fortran)
+
+set(CMAKE_Fortran_FORMAT_FIXED_FLAG "-qfixed") # [=<right_margin>]
+set(CMAKE_Fortran_FORMAT_FREE_FLAG "-qfree") # [=f90|ibm]
+
+set(CMAKE_Fortran_MODDIR_FLAG "-qmoddir=")
+
+set(CMAKE_Fortran_DEFINE_FLAG "-WF,-D")
+
+# -qthreaded     = Ensures that all optimizations will be thread-safe
+# -qhalt=e       = Halt on error messages (rather than just severe errors)
+string(APPEND CMAKE_Fortran_FLAGS_INIT " -qthreaded -qhalt=e")
+
+# xlf: 1501-214 (W) command option E reserved for future use - ignored
+set(CMAKE_Fortran_CREATE_PREPROCESSED_SOURCE)
+set(CMAKE_Fortran_CREATE_ASSEMBLY_SOURCE)
diff --git a/share/cmake-3.10/Modules/Compiler/XL.cmake b/share/cmake-3.10/Modules/Compiler/XL.cmake
new file mode 100644
index 0000000..4783785
--- /dev/null
+++ b/share/cmake-3.10/Modules/Compiler/XL.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.
+
+
+# This module is shared by multiple languages; use include blocker.
+if(__COMPILER_XL)
+  return()
+endif()
+set(__COMPILER_XL 1)
+
+include(Compiler/CMakeCommonCompilerMacros)
+
+# Find the CreateExportList program that comes with this toolchain.
+find_program(CMAKE_XL_CreateExportList
+  NAMES CreateExportList
+  DOC "IBM XL CreateExportList tool"
+  )
+
+macro(__compiler_xl lang)
+  # Feature flags.
+  set(CMAKE_${lang}_VERBOSE_FLAG "-V")
+  set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "-qpic")
+
+  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>")
+
+  # CMAKE_XL_CreateExportList is part of the AIX XL compilers but not the linux ones.
+  # If we found the tool, we'll use it to create exports, otherwise stick with the regular
+  # create shared library compile line.
+  if (CMAKE_XL_CreateExportList)
+    # The compiler front-end passes all object files, archive files, and shared
+    # library files named on the command line to CreateExportList to create a
+    # list of all symbols to be exported from the shared library.  This causes
+    # all archive members to be copied into the shared library whether they are
+    # needed or not.  Instead we run the tool ourselves to pass only the object
+    # files so that we export only the symbols actually provided by the sources.
+    set(CMAKE_${lang}_CREATE_SHARED_LIBRARY
+      "${CMAKE_XL_CreateExportList} <OBJECT_DIR>/objects.exp <OBJECTS>"
+      "<CMAKE_${lang}_COMPILER> <CMAKE_SHARED_LIBRARY_${lang}_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS> -Wl,-bE:<OBJECT_DIR>/objects.exp <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>"
+      )
+  endif()
+endmacro()
diff --git a/share/cmake-3.6/Modules/Compiler/zOS-C-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/zOS-C-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/zOS-C-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/zOS-C-DetermineCompiler.cmake
diff --git a/share/cmake-3.6/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake b/share/cmake-3.10/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake
similarity index 100%
rename from share/cmake-3.6/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake
rename to share/cmake-3.10/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake
diff --git a/share/cmake-3.10/Modules/CompilerId/VS-10.csproj.in b/share/cmake-3.10/Modules/CompilerId/VS-10.csproj.in
new file mode 100644
index 0000000..ed5e847
--- /dev/null
+++ b/share/cmake-3.10/Modules/CompilerId/VS-10.csproj.in
@@ -0,0 +1,55 @@
+<?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.10/Modules/CompilerId/VS-10.vcxproj.in b/share/cmake-3.10/Modules/CompilerId/VS-10.vcxproj.in
new file mode 100644
index 0000000..6b9b361
--- /dev/null
+++ b/share/cmake-3.10/Modules/CompilerId/VS-10.vcxproj.in
@@ -0,0 +1,67 @@
+<?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@
+  </PropertyGroup>
+  <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.6/Modules/CompilerId/VS-7.vcproj.in b/share/cmake-3.10/Modules/CompilerId/VS-7.vcproj.in
similarity index 100%
rename from share/cmake-3.6/Modules/CompilerId/VS-7.vcproj.in
rename to share/cmake-3.10/Modules/CompilerId/VS-7.vcproj.in
diff --git a/share/cmake-3.6/Modules/CompilerId/VS-Intel.vfproj.in b/share/cmake-3.10/Modules/CompilerId/VS-Intel.vfproj.in
similarity index 100%
rename from share/cmake-3.6/Modules/CompilerId/VS-Intel.vfproj.in
rename to share/cmake-3.10/Modules/CompilerId/VS-Intel.vfproj.in
diff --git a/share/cmake-3.6/Modules/CompilerId/VS-NsightTegra.vcxproj.in b/share/cmake-3.10/Modules/CompilerId/VS-NsightTegra.vcxproj.in
similarity index 100%
rename from share/cmake-3.6/Modules/CompilerId/VS-NsightTegra.vcxproj.in
rename to share/cmake-3.10/Modules/CompilerId/VS-NsightTegra.vcxproj.in
diff --git a/share/cmake-3.10/Modules/CompilerId/Xcode-3.pbxproj.in b/share/cmake-3.10/Modules/CompilerId/Xcode-3.pbxproj.in
new file mode 100644
index 0000000..1cbaa57
--- /dev/null
+++ b/share/cmake-3.10/Modules/CompilerId/Xcode-3.pbxproj.in
@@ -0,0 +1,112 @@
+// !$*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 \"CURRENT_ARCH=$CURRENT_ARCH\"";
+			showEnvVarsInLog = 0;
+		};
+		2C18F0B515DC1DCE00593670 = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				2C18F0B615DC1E0300593670,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		1DEB928608733DD80010E9CD = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				@id_development_team@
+				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_toolset@
+				@id_lang_version@
+				@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.6/Modules/CompilerId/main.swift.in b/share/cmake-3.10/Modules/CompilerId/main.swift.in
similarity index 100%
rename from share/cmake-3.6/Modules/CompilerId/main.swift.in
rename to share/cmake-3.10/Modules/CompilerId/main.swift.in
diff --git a/share/cmake-3.10/Modules/Dart.cmake b/share/cmake-3.10/Modules/Dart.cmake
new file mode 100644
index 0000000..e003cd5
--- /dev/null
+++ b/share/cmake-3.10/Modules/Dart.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:
+# Dart
+# ----
+#
+# Configure a project for testing with CTest or old Dart Tcl Client
+#
+# This file is the backwards-compatibility version of the CTest module.
+# It supports using the old Dart 1 Tcl client for driving dashboard
+# submissions as well as testing with CTest.  This module should be
+# included in the CMakeLists.txt file at the top of a project.  Typical
+# usage:
+#
+# ::
+#
+#   include(Dart)
+#   if(BUILD_TESTING)
+#     # ... testing related CMake code ...
+#   endif()
+#
+# The BUILD_TESTING option is created by the Dart module to determine
+# whether testing support should be enabled.  The default is ON.
+
+# This file configures a project to use the Dart testing/dashboard process.
+# It is broken into 3 sections.
+#
+#  Section #1: Locate programs on the client and determine site and build name
+#  Section #2: Configure or copy Tcl scripts from the source tree to build tree
+#  Section #3: Custom targets for performing dashboard builds.
+#
+#
+
+option(BUILD_TESTING "Build the testing tree." ON)
+
+if(BUILD_TESTING)
+  find_package(Dart QUIET)
+
+  #
+  # Section #1:
+  #
+  # CMake commands that will not vary from project to project. Locates programs
+  # on the client and configure site name and build name.
+  #
+
+  set(RUN_FROM_DART 1)
+  include(CTest)
+  set(RUN_FROM_DART)
+
+  find_program(COMPRESSIONCOMMAND NAMES gzip compress zip
+    DOC "Path to program used to compress files for transfer to the dart server")
+  find_program(GUNZIPCOMMAND gunzip DOC "Path to gunzip executable")
+  find_program(JAVACOMMAND java DOC "Path to java command, used by the Dart server to create html.")
+  option(DART_VERBOSE_BUILD "Show the actual output of the build, or if off show a . for each 1024 bytes."
+    OFF)
+  option(DART_BUILD_ERROR_REPORT_LIMIT "Limit of reported errors, -1 reports all." -1 )
+  option(DART_BUILD_WARNING_REPORT_LIMIT "Limit of reported warnings, -1 reports all." -1 )
+
+  set(VERBOSE_BUILD ${DART_VERBOSE_BUILD})
+  set(BUILD_ERROR_REPORT_LIMIT ${DART_BUILD_ERROR_REPORT_LIMIT})
+  set(BUILD_WARNING_REPORT_LIMIT ${DART_BUILD_WARNING_REPORT_LIMIT})
+  set (DELIVER_CONTINUOUS_EMAIL "Off" CACHE BOOL "Should Dart server send email when build errors are found in Continuous builds?")
+
+  mark_as_advanced(
+    COMPRESSIONCOMMAND
+    DART_BUILD_ERROR_REPORT_LIMIT
+    DART_BUILD_WARNING_REPORT_LIMIT
+    DART_TESTING_TIMEOUT
+    DART_VERBOSE_BUILD
+    DELIVER_CONTINUOUS_EMAIL
+    GUNZIPCOMMAND
+    JAVACOMMAND
+    )
+
+  set(HAVE_DART)
+  if(EXISTS "${DART_ROOT}/Source/Client/Dart.conf.in")
+    set(HAVE_DART 1)
+  endif()
+
+  #
+  # Section #2:
+  #
+  # Make necessary directories and configure testing scripts
+  #
+  # find a tcl shell command
+  if(HAVE_DART)
+    find_package(Tclsh)
+  endif()
+
+
+  if (HAVE_DART)
+    # make directories in the binary tree
+    file(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/Testing/HTML/TestingResults/Dashboard"
+      "${PROJECT_BINARY_DIR}/Testing/HTML/TestingResults/Sites/${SITE}/${BUILDNAME}")
+
+    # configure files
+    configure_file(
+      "${DART_ROOT}/Source/Client/Dart.conf.in"
+      "${PROJECT_BINARY_DIR}/DartConfiguration.tcl" )
+
+    #
+    # Section 3:
+    #
+    # Custom targets to perform dashboard builds and submissions.
+    # These should NOT need to be modified from project to project.
+    #
+
+    # add testing targets
+    set(DART_EXPERIMENTAL_NAME Experimental)
+    if(DART_EXPERIMENTAL_USE_PROJECT_NAME)
+      string(APPEND DART_EXPERIMENTAL_NAME "${PROJECT_NAME}")
+    endif()
+  endif ()
+
+  set(RUN_FROM_CTEST_OR_DART 1)
+  include(CTestTargets)
+  set(RUN_FROM_CTEST_OR_DART)
+endif()
+
+#
+# End of Dart.cmake
+#
+
diff --git a/share/cmake-3.10/Modules/DartConfiguration.tcl.in b/share/cmake-3.10/Modules/DartConfiguration.tcl.in
new file mode 100644
index 0000000..b86a5a9
--- /dev/null
+++ b/share/cmake-3.10/Modules/DartConfiguration.tcl.in
@@ -0,0 +1,115 @@
+# 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
+IsCDash: @CTEST_DROP_SITE_CDASH@
+CDashVersion: @CTEST_CDASH_VERSION@
+QueryCDashVersion: @CTEST_CDASH_QUERY_VERSION@
+DropSite: @DROP_SITE@
+DropLocation: @DROP_LOCATION@
+DropSiteUser: @DROP_SITE_USER@
+DropSitePassword: @DROP_SITE_PASSWORD@
+DropSiteMode: @DROP_SITE_MODE@
+DropMethod: @DROP_METHOD@
+TriggerSite: @TRIGGER_SITE@
+ScpCommand: @SCPCOMMAND@
+
+# 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@
+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.10/Modules/DeployQt4.cmake b/share/cmake-3.10/Modules/DeployQt4.cmake
new file mode 100644
index 0000000..8ada451
--- /dev/null
+++ b/share/cmake-3.10/Modules/DeployQt4.cmake
@@ -0,0 +1,380 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#.rst:
+# DeployQt4
+# ---------
+#
+# Functions to help assemble a standalone Qt4 executable.
+#
+# A collection of CMake utility functions useful for deploying Qt4
+# executables.
+#
+# The following functions are provided by this module:
+#
+# ::
+#
+#    write_qt4_conf
+#    resolve_qt4_paths
+#    fixup_qt4_executable
+#    install_qt4_plugin_path
+#    install_qt4_plugin
+#    install_qt4_executable
+#
+# Requires CMake 2.6 or greater because it uses function and
+# PARENT_SCOPE.  Also depends on BundleUtilities.cmake.
+#
+# ::
+#
+#   WRITE_QT4_CONF(<qt_conf_dir> <qt_conf_contents>)
+#
+# Writes a qt.conf file with the <qt_conf_contents> into <qt_conf_dir>.
+#
+# ::
+#
+#   RESOLVE_QT4_PATHS(<paths_var> [<executable_path>])
+#
+# Loop through <paths_var> list and if any don't exist resolve them
+# relative to the <executable_path> (if supplied) or the
+# CMAKE_INSTALL_PREFIX.
+#
+# ::
+#
+#   FIXUP_QT4_EXECUTABLE(<executable>
+#     [<qtplugins> <libs> <dirs> <plugins_dir> <request_qt_conf>])
+#
+# Copies Qt plugins, writes a Qt configuration file (if needed) and
+# fixes up a Qt4 executable using BundleUtilities so it is standalone
+# and can be drag-and-drop copied to another machine as long as all of
+# the system libraries are compatible.
+#
+# <executable> should point to the executable to be fixed-up.
+#
+# <qtplugins> should contain a list of the names or paths of any Qt
+# plugins to be installed.
+#
+# <libs> will be passed to BundleUtilities and should be a list of any
+# already installed plugins, libraries or executables to also be
+# fixed-up.
+#
+# <dirs> will be passed to BundleUtilities and should contain and
+# directories to be searched to find library dependencies.
+#
+# <plugins_dir> allows an custom plugins directory to be used.
+#
+# <request_qt_conf> will force a qt.conf file to be written even if not
+# needed.
+#
+# ::
+#
+#   INSTALL_QT4_PLUGIN_PATH(plugin executable copy installed_plugin_path_var
+#                           <plugins_dir> <component> <configurations>)
+#
+# Install (or copy) a resolved <plugin> to the default plugins directory
+# (or <plugins_dir>) relative to <executable> and store the result in
+# <installed_plugin_path_var>.
+#
+# If <copy> is set to TRUE then the plugins will be copied rather than
+# installed.  This is to allow this module to be used at CMake time
+# rather than install time.
+#
+# If <component> is set then anything installed will use this COMPONENT.
+#
+# ::
+#
+#   INSTALL_QT4_PLUGIN(plugin executable copy installed_plugin_path_var
+#                      <plugins_dir> <component>)
+#
+# Install (or copy) an unresolved <plugin> to the default plugins
+# directory (or <plugins_dir>) relative to <executable> and store the
+# result in <installed_plugin_path_var>.  See documentation of
+# INSTALL_QT4_PLUGIN_PATH.
+#
+# ::
+#
+#   INSTALL_QT4_EXECUTABLE(<executable>
+#     [<qtplugins> <libs> <dirs> <plugins_dir> <request_qt_conf> <component>])
+#
+# Installs Qt plugins, writes a Qt configuration file (if needed) and
+# fixes up a Qt4 executable using BundleUtilities so it is standalone
+# and can be drag-and-drop copied to another machine as long as all of
+# the system libraries are compatible.  The executable will be fixed-up
+# at install time.  <component> is the COMPONENT used for bundle fixup
+# and plugin installation.  See documentation of FIXUP_QT4_BUNDLE.
+
+# The functions defined in this file depend on the fixup_bundle function
+# (and others) found in BundleUtilities.cmake
+
+include("${CMAKE_CURRENT_LIST_DIR}/BundleUtilities.cmake")
+set(DeployQt4_cmake_dir "${CMAKE_CURRENT_LIST_DIR}")
+set(DeployQt4_apple_plugins_dir "PlugIns")
+
+function(write_qt4_conf qt_conf_dir qt_conf_contents)
+        set(qt_conf_path "${qt_conf_dir}/qt.conf")
+        message(STATUS "Writing ${qt_conf_path}")
+        file(WRITE "${qt_conf_path}" "${qt_conf_contents}")
+endfunction()
+
+function(resolve_qt4_paths paths_var)
+        unset(executable_path)
+        if(ARGC GREATER 1)
+                set(executable_path ${ARGV1})
+        endif()
+
+        set(paths_resolved)
+        foreach(path ${${paths_var}})
+                if(EXISTS "${path}")
+                        list(APPEND paths_resolved "${path}")
+                else()
+                        if(${executable_path})
+                                list(APPEND paths_resolved "${executable_path}/${path}")
+                        else()
+                                list(APPEND paths_resolved "\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${path}")
+                        endif()
+                endif()
+        endforeach()
+        set(${paths_var} ${paths_resolved} PARENT_SCOPE)
+endfunction()
+
+function(fixup_qt4_executable executable)
+        unset(qtplugins)
+        if(ARGC GREATER 1)
+                set(qtplugins ${ARGV1})
+        endif()
+        unset(libs)
+        if(ARGC GREATER 2)
+                set(libs ${ARGV2})
+        endif()
+        unset(dirs)
+        if(ARGC GREATER 3)
+                set(dirs ${ARGV3})
+        endif()
+        unset(plugins_dir)
+        if(ARGC GREATER 4)
+                set(plugins_dir ${ARGV4})
+        endif()
+        unset(request_qt_conf)
+        if(ARGC GREATER 5)
+                set(request_qt_conf ${ARGV5})
+        endif()
+
+        message(STATUS "fixup_qt4_executable")
+        message(STATUS "  executable='${executable}'")
+        message(STATUS "  qtplugins='${qtplugins}'")
+        message(STATUS "  libs='${libs}'")
+        message(STATUS "  dirs='${dirs}'")
+        message(STATUS "  plugins_dir='${plugins_dir}'")
+        message(STATUS "  request_qt_conf='${request_qt_conf}'")
+
+        if(QT_LIBRARY_DIR)
+                list(APPEND dirs "${QT_LIBRARY_DIR}")
+        endif()
+        if(QT_BINARY_DIR)
+                list(APPEND dirs "${QT_BINARY_DIR}")
+        endif()
+
+        if(APPLE)
+                set(qt_conf_dir "${executable}/Contents/Resources")
+                set(executable_path "${executable}")
+                set(write_qt_conf TRUE)
+                if(NOT DEFINED plugins_dir)
+                        set(plugins_dir "${DeployQt4_apple_plugins_dir}")
+                endif()
+        else()
+                get_filename_component(executable_path "${executable}" PATH)
+                if(NOT executable_path)
+                        set(executable_path ".")
+                endif()
+                set(qt_conf_dir "${executable_path}")
+                set(write_qt_conf ${request_qt_conf})
+        endif()
+
+        foreach(plugin ${qtplugins})
+                set(installed_plugin_path "")
+                install_qt4_plugin("${plugin}" "${executable}" 1 installed_plugin_path)
+                list(APPEND libs ${installed_plugin_path})
+        endforeach()
+
+        foreach(lib ${libs})
+                if(NOT EXISTS "${lib}")
+                        message(FATAL_ERROR "Library does not exist: ${lib}")
+                endif()
+        endforeach()
+
+        resolve_qt4_paths(libs "${executable_path}")
+
+        if(write_qt_conf)
+                set(qt_conf_contents "[Paths]\nPlugins = ${plugins_dir}")
+                write_qt4_conf("${qt_conf_dir}" "${qt_conf_contents}")
+        endif()
+
+        fixup_bundle("${executable}" "${libs}" "${dirs}")
+endfunction()
+
+function(install_qt4_plugin_path plugin executable copy installed_plugin_path_var)
+        unset(plugins_dir)
+        if(ARGC GREATER 4)
+                set(plugins_dir ${ARGV4})
+        endif()
+        unset(component)
+        if(ARGC GREATER 5)
+                set(component ${ARGV5})
+        endif()
+        unset(configurations)
+        if(ARGC GREATER 6)
+                set(configurations ${ARGV6})
+        endif()
+
+        if(EXISTS "${plugin}")
+                if(APPLE)
+                        if(NOT plugins_dir)
+                                set(plugins_dir "${DeployQt4_apple_plugins_dir}")
+                        endif()
+                        set(plugins_path "${executable}/Contents/${plugins_dir}")
+                else()
+                        get_filename_component(plugins_path "${executable}" PATH)
+                        if(NOT plugins_path)
+                                set(plugins_path ".")
+                        endif()
+                        if(plugins_dir)
+                                string(APPEND plugins_path "/${plugins_dir}")
+                        endif()
+                endif()
+
+                set(plugin_group "")
+
+                get_filename_component(plugin_path "${plugin}" PATH)
+                get_filename_component(plugin_parent_path "${plugin_path}" PATH)
+                get_filename_component(plugin_parent_dir_name "${plugin_parent_path}" NAME)
+                get_filename_component(plugin_name "${plugin}" NAME)
+                string(TOLOWER "${plugin_parent_dir_name}" plugin_parent_dir_name)
+
+                if("${plugin_parent_dir_name}" STREQUAL "plugins")
+                        get_filename_component(plugin_group "${plugin_path}" NAME)
+                        set(${plugin_group_var} "${plugin_group}")
+                endif()
+                string(APPEND plugins_path "/${plugin_group}")
+
+                if(${copy})
+                        file(MAKE_DIRECTORY "${plugins_path}")
+                        file(COPY "${plugin}" DESTINATION "${plugins_path}")
+                else()
+                        if(configurations AND (CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE))
+                                set(configurations CONFIGURATIONS ${configurations})
+                        else()
+                                unset(configurations)
+                        endif()
+                        install(FILES "${plugin}" DESTINATION "${plugins_path}" ${configurations} ${component})
+                endif()
+                set(${installed_plugin_path_var} "${plugins_path}/${plugin_name}" PARENT_SCOPE)
+        endif()
+endfunction()
+
+function(install_qt4_plugin plugin executable copy installed_plugin_path_var)
+        unset(plugins_dir)
+        if(ARGC GREATER 4)
+                set(plugins_dir ${ARGV4})
+        endif()
+        unset(component)
+        if(ARGC GREATER 5)
+                set(component ${ARGV5})
+        endif()
+
+        if(EXISTS "${plugin}")
+                install_qt4_plugin_path("${plugin}" "${executable}" "${copy}" "${installed_plugin_path_var}" "${plugins_dir}" "${component}")
+        else()
+                string(TOUPPER "QT_${plugin}_PLUGIN" plugin_var)
+                set(plugin_release_var "${plugin_var}_RELEASE")
+                set(plugin_debug_var "${plugin_var}_DEBUG")
+                set(plugin_release "${${plugin_release_var}}")
+                set(plugin_debug "${${plugin_debug_var}}")
+                if(DEFINED "${plugin_release_var}" AND DEFINED "${plugin_debug_var}" AND NOT EXISTS "${plugin_release}" AND NOT EXISTS "${plugin_debug}")
+                        message(WARNING "Qt plugin \"${plugin}\" not recognized or found.")
+                endif()
+                if(NOT EXISTS "${${plugin_debug_var}}")
+                        set(plugin_debug "${plugin_release}")
+                endif()
+
+                if(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
+                        install_qt4_plugin_path("${plugin_release}" "${executable}" "${copy}" "${installed_plugin_path_var}_release" "${plugins_dir}" "${component}" "Release|RelWithDebInfo|MinSizeRel")
+                        install_qt4_plugin_path("${plugin_debug}" "${executable}" "${copy}" "${installed_plugin_path_var}_debug" "${plugins_dir}" "${component}" "Debug")
+
+                        if(CMAKE_BUILD_TYPE MATCHES "^Debug$")
+                                set(${installed_plugin_path_var} ${${installed_plugin_path_var}_debug})
+                        else()
+                                set(${installed_plugin_path_var} ${${installed_plugin_path_var}_release})
+                        endif()
+                else()
+                        install_qt4_plugin_path("${plugin_release}" "${executable}" "${copy}" "${installed_plugin_path_var}" "${plugins_dir}" "${component}")
+                endif()
+        endif()
+        set(${installed_plugin_path_var} ${${installed_plugin_path_var}} PARENT_SCOPE)
+endfunction()
+
+function(install_qt4_executable executable)
+        unset(qtplugins)
+        if(ARGC GREATER 1)
+                set(qtplugins ${ARGV1})
+        endif()
+        unset(libs)
+        if(ARGC GREATER 2)
+                set(libs ${ARGV2})
+        endif()
+        unset(dirs)
+        if(ARGC GREATER 3)
+                set(dirs ${ARGV3})
+        endif()
+        unset(plugins_dir)
+        if(ARGC GREATER 4)
+                set(plugins_dir ${ARGV4})
+        endif()
+        unset(request_qt_conf)
+        if(ARGC GREATER 5)
+                set(request_qt_conf ${ARGV5})
+        endif()
+        unset(component)
+        if(ARGC GREATER 6)
+                set(component ${ARGV6})
+        endif()
+
+        if(QT_LIBRARY_DIR)
+                list(APPEND dirs "${QT_LIBRARY_DIR}")
+        endif()
+        if(QT_BINARY_DIR)
+                list(APPEND dirs "${QT_BINARY_DIR}")
+        endif()
+        if(component)
+                set(component COMPONENT ${component})
+        else()
+                unset(component)
+        endif()
+
+        get_filename_component(executable_absolute "${executable}" ABSOLUTE)
+        if(EXISTS "${QT_QTCORE_LIBRARY_RELEASE}")
+            gp_file_type("${executable_absolute}" "${QT_QTCORE_LIBRARY_RELEASE}" qtcore_type)
+        elseif(EXISTS "${QT_QTCORE_LIBRARY_DEBUG}")
+            gp_file_type("${executable_absolute}" "${QT_QTCORE_LIBRARY_DEBUG}" qtcore_type)
+        endif()
+        if(qtcore_type STREQUAL "system")
+                set(qt_plugins_dir "")
+        endif()
+
+        if(QT_IS_STATIC)
+                message(WARNING "Qt built statically: not installing plugins.")
+        else()
+                foreach(plugin ${qtplugins})
+                        set(installed_plugin_paths "")
+                        install_qt4_plugin("${plugin}" "${executable}" 0 installed_plugin_paths "${plugins_dir}" "${component}")
+                        list(APPEND libs ${installed_plugin_paths})
+                endforeach()
+        endif()
+
+        resolve_qt4_paths(libs "")
+
+        install(CODE
+  "include(\"${DeployQt4_cmake_dir}/DeployQt4.cmake\")
+  set(BU_CHMOD_BUNDLE_ITEMS TRUE)
+  FIXUP_QT4_EXECUTABLE(\"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${executable}\" \"\" \"${libs}\" \"${dirs}\" \"${plugins_dir}\" \"${request_qt_conf}\")"
+                ${component}
+        )
+endfunction()
diff --git a/share/cmake-3.10/Modules/Documentation.cmake b/share/cmake-3.10/Modules/Documentation.cmake
new file mode 100644
index 0000000..fc398e6
--- /dev/null
+++ b/share/cmake-3.10/Modules/Documentation.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.
+
+#.rst:
+# Documentation
+# -------------
+#
+# DocumentationVTK.cmake
+#
+# This file provides support for the VTK documentation framework.  It
+# relies on several tools (Doxygen, Perl, etc).
+
+#
+# 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 controled by a batch file.
+  # We will probably need bash to create the custom target
+  #
+
+endif ()
diff --git a/share/cmake-3.6/Modules/DummyCXXFile.cxx b/share/cmake-3.10/Modules/DummyCXXFile.cxx
similarity index 100%
rename from share/cmake-3.6/Modules/DummyCXXFile.cxx
rename to share/cmake-3.10/Modules/DummyCXXFile.cxx
diff --git a/share/cmake-3.10/Modules/ExternalData.cmake b/share/cmake-3.10/Modules/ExternalData.cmake
new file mode 100644
index 0000000..7331fb2
--- /dev/null
+++ b/share/cmake-3.10/Modules/ExternalData.cmake
@@ -0,0 +1,1152 @@
+# 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.
+    execute_process(COMMAND "${CMAKE_COMMAND}" -E 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.6/Modules/ExternalData_config.cmake.in b/share/cmake-3.10/Modules/ExternalData_config.cmake.in
similarity index 100%
rename from share/cmake-3.6/Modules/ExternalData_config.cmake.in
rename to share/cmake-3.10/Modules/ExternalData_config.cmake.in
diff --git a/share/cmake-3.10/Modules/ExternalProject-download.cmake.in b/share/cmake-3.10/Modules/ExternalProject-download.cmake.in
new file mode 100644
index 0000000..7f92596
--- /dev/null
+++ b/share/cmake-3.10/Modules/ExternalProject-download.cmake.in
@@ -0,0 +1,160 @@
+# 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@
+
+    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.10/Modules/ExternalProject-verify.cmake.in b/share/cmake-3.10/Modules/ExternalProject-verify.cmake.in
new file mode 100644
index 0000000..c06da4e
--- /dev/null
+++ b/share/cmake-3.10/Modules/ExternalProject-verify.cmake.in
@@ -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.
+
+cmake_minimum_required(VERSION 3.5)
+
+if("@LOCAL@" STREQUAL "")
+  message(FATAL_ERROR "LOCAL can't be empty")
+endif()
+
+if(NOT EXISTS "@LOCAL@")
+  message(FATAL_ERROR "File not found: @LOCAL@")
+endif()
+
+if("@ALGO@" STREQUAL "")
+  message(WARNING "File will not be verified since no URL_HASH specified")
+  return()
+endif()
+
+if("@EXPECT_VALUE@" STREQUAL "")
+  message(FATAL_ERROR "EXPECT_VALUE can't be empty")
+endif()
+
+message(STATUS "verifying file...
+     file='@LOCAL@'")
+
+file("@ALGO@" "@LOCAL@" actual_value)
+
+if(NOT "${actual_value}" STREQUAL "@EXPECT_VALUE@")
+  message(FATAL_ERROR "error: @ALGO@ hash of
+  @LOCAL@
+does not match expected value
+  expected: '@EXPECT_VALUE@'
+    actual: '${actual_value}'
+")
+endif()
+
+message(STATUS "verifying file... done")
diff --git a/share/cmake-3.10/Modules/ExternalProject.cmake b/share/cmake-3.10/Modules/ExternalProject.cmake
new file mode 100644
index 0000000..419c9d6
--- /dev/null
+++ b/share/cmake-3.10/Modules/ExternalProject.cmake
@@ -0,0 +1,3042 @@
+# 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::
+
+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::
+
+    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 (see *Logging Options* below).
+
+    ``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>
+
+    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>
+
+    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=<value>``
+        Hash of the archive file to be downloaded. The ``<value>`` 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)`)
+
+    *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.
+
+      ``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.
+
+      ``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``.
+
+    *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_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.
+
+    ``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``.
+
+  **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 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_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.
+
+  **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::
+
+        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::
+
+    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`::
+
+    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 ``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>``
+  and ``<TMP_DIR>`` 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>``::
+
+    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)::
+
+    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
+
+# 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.
+  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}")
+    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 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.7.10)
+    set(git_clone_shallow_options "--depth 1 --no-single-branch")
+  else()
+    set(git_clone_shallow_options "--depth 1")
+  endif()
+  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()
+  file(WRITE ${script_filename}
+"if(\"${git_tag}\" STREQUAL \"\")
+  message(FATAL_ERROR \"Tag for git checkout should not be empty.\")
+endif()
+
+set(run 0)
+
+if(\"${gitclone_infofile}\" IS_NEWER_THAN \"${gitclone_stampfile}\")
+  set(run 1)
+endif()
+
+if(NOT run)
+  message(STATUS \"Avoiding repeated git clone, stamp file is up to date: '${gitclone_stampfile}'\")
+  return()
+endif()
+
+execute_process(
+  COMMAND \${CMAKE_COMMAND} -E remove_directory \"${source_dir}\"
+  RESULT_VARIABLE error_code
+  )
+if(error_code)
+  message(FATAL_ERROR \"Failed to remove directory: '${source_dir}'\")
+endif()
+
+set(git_options)
+
+# disable cert checking if explicitly told not to do it
+set(tls_verify \"${tls_verify}\")
+if(NOT \"x${tls_verify}\" STREQUAL \"x\" AND NOT tls_verify)
+  list(APPEND git_options
+    -c http.sslVerify=false)
+endif()
+
+set(git_clone_options)
+
+set(git_shallow \"${git_shallow}\")
+if(git_shallow)
+  list(APPEND git_clone_options ${git_clone_shallow_options})
+endif()
+
+set(git_progress \"${git_progress}\")
+if(git_progress)
+  list(APPEND git_clone_options --progress)
+endif()
+
+set(git_config \"${git_config}\")
+foreach(config IN LISTS git_config)
+  list(APPEND git_clone_options --config \${config})
+endforeach()
+
+# try the clone 3 times incase 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} --origin \"${git_remote_name}\" \"${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()
+
+execute_process(
+  COMMAND \"${git_EXECUTABLE}\" \${git_options} submodule init ${git_submodules}
+  WORKING_DIRECTORY \"${work_dir}/${src_name}\"
+  RESULT_VARIABLE error_code
+  )
+if(error_code)
+  message(FATAL_ERROR \"Failed to init submodules in: '${work_dir}/${src_name}'\")
+endif()
+
+execute_process(
+  COMMAND \"${git_EXECUTABLE}\" \${git_options} submodule update --recursive --init ${git_submodules}
+  WORKING_DIRECTORY \"${work_dir}/${src_name}\"
+  RESULT_VARIABLE error_code
+  )
+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}\"
+  WORKING_DIRECTORY \"${work_dir}/${src_name}\"
+  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)
+  file(WRITE ${script_filename}
+"if(\"${hg_tag}\" STREQUAL \"\")
+  message(FATAL_ERROR \"Tag for hg checkout should not be empty.\")
+endif()
+
+set(run 0)
+
+if(\"${hgclone_infofile}\" IS_NEWER_THAN \"${hgclone_stampfile}\")
+  set(run 1)
+endif()
+
+if(NOT run)
+  message(STATUS \"Avoiding repeated hg clone, stamp file is up to date: '${hgclone_stampfile}'\")
+  return()
+endif()
+
+execute_process(
+  COMMAND \${CMAKE_COMMAND} -E remove_directory \"${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}\"
+  WORKING_DIRECTORY \"${work_dir}/${src_name}\"
+  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 git_submodules git_repository work_dir)
+  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()
+  file(WRITE ${script_filename}
+"if(\"${git_tag}\" STREQUAL \"\")
+  message(FATAL_ERROR \"Tag for git checkout should not be empty.\")
+endif()
+
+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 be able to
+    # perform git pull --rebase
+    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()
+
+    # Pull changes from the remote branch
+    execute_process(
+      COMMAND \"${git_EXECUTABLE}\" rebase \${git_remote}/\${git_tag}
+      WORKING_DIRECTORY \"${work_dir}\"
+      RESULT_VARIABLE error_code
+      )
+    if(error_code)
+      # Rebase failed: Restore previous state.
+      execute_process(
+        COMMAND \"${git_EXECUTABLE}\" rebase --abort
+        WORKING_DIRECTORY \"${work_dir}\"
+      )
+      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}/${src_name}'.\\nYou will have to resolve the conflicts manually\")
+    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}/${src_name}'.\\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()
+
+  execute_process(
+    COMMAND \"${git_EXECUTABLE}\" submodule update --recursive --init ${git_submodules}
+    WORKING_DIRECTORY \"${work_dir}/${src_name}\"
+    RESULT_VARIABLE error_code
+    )
+  if(error_code)
+    message(FATAL_ERROR \"Failed to update submodules in: '${work_dir}/${src_name}'\")
+  endif()
+endif()
+
+"
+)
+
+endfunction(_ep_write_gitupdate_script)
+
+function(_ep_write_downloadfile_script script_filename REMOTE LOCAL timeout no_progress hash tls_verify tls_cainfo userpwd http_headers)
+  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 "")
+
+  # 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()
+
+  # 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()
+
+  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}")
+  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()
+  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)
+    set_property(TARGET ${name} PROPERTY _EP_BINARY_DIR "${source_dir}")
+  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 DOWNLOADED_FILE)
+        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(setArg)
+        # 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(setArg)
+    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)
+  # 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 ".")
+      if(CMAKE_CONFIGURATION_TYPES)
+        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(CMAKE_CONFIGURATION_TYPES)
+          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()
+
+  list(APPEND cmd ${args})
+  set(${cmd_var} "${cmd}" PARENT_SCOPE)
+endfunction()
+
+function(_ep_write_log_script name step cmd_var)
+  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 ${stamp_dir}/${name}-${step})
+  set(code "
+${code_cygpath_make}
+set(command \"${command}\")
+execute_process(
+  COMMAND \${command}
+  RESULT_VARIABLE result
+  OUTPUT_FILE \"${logbase}-out.log\"
+  ERROR_FILE \"${logbase}-err.log\"
+  )
+if(result)
+  set(msg \"Command failed: \${result}\\n\")
+  foreach(arg IN LISTS command)
+    set(msg \"\${msg} '\${arg}'\")
+  endforeach()
+  set(msg \"\${msg}\\nSee also\\n  ${logbase}-*.log\")
+  message(FATAL_ERROR \"\${msg}\")
+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 "")
+  if(CMAKE_CONFIGURATION_TYPES)
+    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.
+    if(CMAKE_CONFIGURATION_TYPES)
+      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()
+
+  add_custom_command(
+    OUTPUT ${stamp_file}
+    BYPRODUCTS ${byproducts}
+    COMMENT ${comment}
+    COMMAND ${command}
+    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(NOT is_step)
+    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)
+
+  _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}
+    )
+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_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()
+
+    # The git submodule update '--recursive' flag requires git >= v1.6.5
+    #
+    if(GIT_VERSION_STRING VERSION_LESS 1.6.5)
+      message(FATAL_ERROR "error: git version 1.6.5 or later required for 'git submodule update --recursive': GIT_VERSION_STRING='${GIT_VERSION_STRING}'")
+    endif()
+
+    get_property(git_tag TARGET ${name} PROPERTY _EP_GIT_TAG)
+    if(NOT git_tag)
+      set(git_tag "master")
+    endif()
+    get_property(git_submodules TARGET ${name} PROPERTY _EP_GIT_SUBMODULES)
+
+    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)
+    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_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 remove_directory ${source_dir}
+        COMMAND ${CMAKE_COMMAND} -E copy_directory ${abs_dir} ${source_dir})
+    else()
+      get_property(no_extract TARGET "${name}" PROPERTY _EP_DOWNLOAD_NO_EXTRACT SET)
+      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(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}")
+        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()
+
+  ExternalProject_Add_Step(${name} download
+    COMMENT ${comment}
+    COMMAND ${cmd}
+    WORKING_DIRECTORY ${work_dir}
+    DEPENDS ${depends}
+    DEPENDEES mkdir
+    ${log}
+    ${uses_terminal}
+    )
+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 )
+  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(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()
+    get_property(git_submodules TARGET ${name} PROPERTY _EP_GIT_SUBMODULES)
+    _ep_write_gitupdate_script(${tmp_dir}/${name}-gitupdate.cmake
+      ${GIT_EXECUTABLE} ${git_tag} ${git_remote_name} "${git_submodules}" ${git_repository} ${work_dir}
+      )
+    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()
+
+  ExternalProject_Add_Step(${name} update
+    COMMENT ${comment}
+    COMMAND ${cmd}
+    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()
+
+  ExternalProject_Add_Step(${name} patch
+    COMMAND ${cmd}
+    WORKING_DIRECTORY ${work_dir}
+    DEPENDEES download
+    )
+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)
+
+    if(cmake_cache_args OR cmake_cache_default_args)
+      set(_ep_cache_args_script "<TMP_DIR>/${name}-cache-$<CONFIG>.cmake")
+      if(cmake_cache_args)
+        _ep_command_line_to_initial_cache(script_initial_cache_force "${cmake_cache_args}" 1)
+      endif()
+      if(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}")
+    endif()
+
+    get_target_property(cmake_generator ${name} _EP_CMAKE_GENERATOR)
+    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()
+    else()
+      if(CMAKE_EXTRA_GENERATOR)
+        list(APPEND cmd "-G${CMAKE_EXTRA_GENERATOR} - ${CMAKE_GENERATOR}")
+      else()
+        list(APPEND cmd "-G${CMAKE_GENERATOR}")
+      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()
+    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()
+
+  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()
+  if(update_disconnected)
+    set(update_dep skip-update)
+  else()
+    set(update_dep update)
+  endif()
+
+  ExternalProject_Add_Step(${name} configure
+    COMMAND ${cmd}
+    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)
+
+  ExternalProject_Add_Step(${name} build
+    COMMAND ${cmd}
+    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()
+
+  ExternalProject_Add_Step(${name} install
+    COMMAND ${cmd}
+    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()
+
+    ExternalProject_Add_Step(${name} test
+      COMMAND ${cmd}
+      WORKING_DIRECTORY ${binary_dir}
+      ${dependees_args}
+      ${dependers_args}
+      ${exclude_args}
+      ${log}
+      ${uses_terminal}
+      )
+  endif()
+endfunction()
+
+
+function(ExternalProject_Add name)
+  _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.10/Modules/FLTKCompatibility.cmake b/share/cmake-3.10/Modules/FLTKCompatibility.cmake
new file mode 100644
index 0000000..e91531f
--- /dev/null
+++ b/share/cmake-3.10/Modules/FLTKCompatibility.cmake
@@ -0,0 +1,5 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+include(CheckIncludeFile)
diff --git a/share/cmake-3.10/Modules/FeatureSummary.cmake b/share/cmake-3.10/Modules/FeatureSummary.cmake
new file mode 100644
index 0000000..1b93304
--- /dev/null
+++ b/share/cmake-3.10/Modules/FeatureSummary.cmake
@@ -0,0 +1,741 @@
+# 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
+^^^^^^^^^
+
+#]=======================================================================]
+
+include(CMakeParseArguments)
+
+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 severly 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.10/Modules/FindALSA.cmake b/share/cmake-3.10/Modules/FindALSA.cmake
new file mode 100644
index 0000000..fa9a434
--- /dev/null
+++ b/share/cmake-3.10/Modules/FindALSA.cmake
@@ -0,0 +1,52 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#.rst:
+# FindALSA
+# --------
+#
+# Find alsa
+#
+# Find the alsa libraries (asound)
+#
+# ::
+#
+#   This module defines the following variables:
+#      ALSA_FOUND       - True if ALSA_INCLUDE_DIR & ALSA_LIBRARY are found
+#      ALSA_LIBRARIES   - Set when ALSA_LIBRARY is found
+#      ALSA_INCLUDE_DIRS - Set when ALSA_INCLUDE_DIR is found
+#
+#
+#
+# ::
+#
+#      ALSA_INCLUDE_DIR - where to find asoundlib.h, etc.
+#      ALSA_LIBRARY     - the asound library
+#      ALSA_VERSION_STRING - the version of alsa found (since CMake 2.8.8)
+
+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} )
+endif()
+
+mark_as_advanced(ALSA_INCLUDE_DIR ALSA_LIBRARY)
diff --git a/share/cmake-3.10/Modules/FindASPELL.cmake b/share/cmake-3.10/Modules/FindASPELL.cmake
new file mode 100644
index 0000000..6944ac1
--- /dev/null
+++ b/share/cmake-3.10/Modules/FindASPELL.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:
+# FindASPELL
+# ----------
+#
+# Try to find ASPELL
+#
+# Once done this will define
+#
+# ::
+#
+#   ASPELL_FOUND - system has ASPELL
+#   ASPELL_EXECUTABLE - the ASPELL executable
+#   ASPELL_INCLUDE_DIR - the ASPELL include directory
+#   ASPELL_LIBRARIES - The libraries needed to use ASPELL
+#   ASPELL_DEFINITIONS - Compiler switches required for using ASPELL
+
+find_path(ASPELL_INCLUDE_DIR aspell.h )
+
+find_program(ASPELL_EXECUTABLE
+  NAMES aspell
+)
+
+find_library(ASPELL_LIBRARIES NAMES aspell aspell-15 libaspell-15 libaspell)
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(ASPELL DEFAULT_MSG ASPELL_LIBRARIES ASPELL_INCLUDE_DIR ASPELL_EXECUTABLE)
+
+mark_as_advanced(ASPELL_INCLUDE_DIR ASPELL_LIBRARIES ASPELL_EXECUTABLE)
diff --git a/share/cmake-3.10/Modules/FindAVIFile.cmake b/share/cmake-3.10/Modules/FindAVIFile.cmake
new file mode 100644
index 0000000..88a2a25
--- /dev/null
+++ b/share/cmake-3.10/Modules/FindAVIFile.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:
+# FindAVIFile
+# -----------
+#
+# Locate AVIFILE library and include paths
+#
+# AVIFILE (http://avifile.sourceforge.net/)is a set of libraries for
+# i386 machines to use various AVI codecs.  Support is limited beyond
+# Linux.  Windows provides native AVI support, and so doesn't need this
+# library.  This module defines
+#
+# ::
+#
+#   AVIFILE_INCLUDE_DIR, where to find avifile.h , etc.
+#   AVIFILE_LIBRARIES, the libraries to link against
+#   AVIFILE_DEFINITIONS, definitions to use when compiling
+#   AVIFILE_FOUND, If false, don't try to use AVIFILE
+
+if (UNIX)
+
+  find_path(AVIFILE_INCLUDE_DIR avifile.h
+    /usr/local/avifile/include
+    /usr/local/include/avifile
+  )
+
+  find_library(AVIFILE_AVIPLAY_LIBRARY aviplay
+    /usr/local/avifile/lib
+  )
+
+endif ()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(AVIFile DEFAULT_MSG AVIFILE_INCLUDE_DIR AVIFILE_AVIPLAY_LIBRARY)
+
+if (AVIFILE_FOUND)
+    set(AVIFILE_LIBRARIES ${AVIFILE_AVIPLAY_LIBRARY})
+    set(AVIFILE_DEFINITIONS "")
+endif()
+
+mark_as_advanced(AVIFILE_INCLUDE_DIR AVIFILE_AVIPLAY_LIBRARY)
diff --git a/share/cmake-3.10/Modules/FindArmadillo.cmake b/share/cmake-3.10/Modules/FindArmadillo.cmake
new file mode 100644
index 0000000..95f0c56
--- /dev/null
+++ b/share/cmake-3.10/Modules/FindArmadillo.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:
+# FindArmadillo
+# -------------
+#
+# Find Armadillo
+#
+# Find the Armadillo C++ library
+#
+# 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")
+
+# UNIX paths are standard, no need to write.
+find_library(ARMADILLO_LIBRARY
+  NAMES armadillo
+  PATHS "$ENV{ProgramFiles}/Armadillo/lib"  "$ENV{ProgramFiles}/Armadillo/lib64" "$ENV{ProgramFiles}/Armadillo"
+  )
+find_path(ARMADILLO_INCLUDE_DIR
+  NAMES armadillo
+  PATHS "$ENV{ProgramFiles}/Armadillo/include"
+  )
+
+
+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" _armadillo_HEADER_CONTENTS REGEX "#define ARMA_VERSION_[A-Z]+ ")
+    string(REGEX REPLACE ".*#define ARMA_VERSION_MAJOR ([0-9]+).*" "\\1" ARMADILLO_VERSION_MAJOR "${_armadillo_HEADER_CONTENTS}")
+    string(REGEX REPLACE ".*#define ARMA_VERSION_MINOR ([0-9]+).*" "\\1" ARMADILLO_VERSION_MINOR "${_armadillo_HEADER_CONTENTS}")
+    string(REGEX REPLACE ".*#define ARMA_VERSION_PATCH ([0-9]+).*" "\\1" ARMADILLO_VERSION_PATCH "${_armadillo_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 "${_armadillo_HEADER_CONTENTS}")
+
+    unset(_armadillo_HEADER_CONTENTS)
+  endif()
+
+  set(ARMADILLO_VERSION_STRING "${ARMADILLO_VERSION_MAJOR}.${ARMADILLO_VERSION_MINOR}.${ARMADILLO_VERSION_PATCH}")
+endif ()
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+find_package_handle_standard_args(Armadillo
+  REQUIRED_VARS ARMADILLO_LIBRARY ARMADILLO_INCLUDE_DIR
+  VERSION_VAR ARMADILLO_VERSION_STRING)
+# version_var fails with cmake < 2.8.4.
+
+if (ARMADILLO_FOUND)
+  set(ARMADILLO_INCLUDE_DIRS ${ARMADILLO_INCLUDE_DIR})
+  set(ARMADILLO_LIBRARIES ${ARMADILLO_LIBRARY})
+endif ()
+
+# Hide internal variables
+mark_as_advanced(
+  ARMADILLO_INCLUDE_DIR
+  ARMADILLO_LIBRARY)
diff --git a/share/cmake-3.10/Modules/FindBISON.cmake b/share/cmake-3.10/Modules/FindBISON.cmake
new file mode 100644
index 0000000..d684ccd
--- /dev/null
+++ b/share/cmake-3.10/Modules/FindBISON.cmake
@@ -0,0 +1,253 @@
+# 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.  ``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 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()
+  endmacro()
+
+  # internal macro
+  # adds a custom command and sets
+  #   BISON_TARGET_cmdopt, BISON_TARGET_verbose_file, BISON_TARGET_extraoutputs
+  macro(BISON_TARGET_option_verbose Name BisonOutput filename)
+    list(APPEND BISON_TARGET_cmdopt "--verbose")
+    list(APPEND BISON_TARGET_extraoutputs
+      "${BISON_TARGET_verbose_file}")
+    if (NOT "${filename}" STREQUAL "")
+      add_custom_command(OUTPUT ${filename}
+        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 ${CMAKE_SOURCE_DIR})
+      set(BISON_${Name}_VERBOSE_FILE ${filename})
+      list(APPEND BISON_TARGET_extraoutputs
+        "${filename}")
+    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}")
+
+      add_custom_command(OUTPUT ${BISON_TARGET_outputs}
+        ${BISON_TARGET_extraoutputs}
+        COMMAND ${BISON_EXECUTABLE} ${BISON_TARGET_cmdopt} -o ${BisonOutput} ${BisonInput}
+        VERBATIM
+        DEPENDS ${BisonInput}
+        COMMENT "[BISON][${Name}] Building parser with bison ${BISON_VERSION}"
+        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+
+      # 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}")
+
+    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.10/Modules/FindBLAS.cmake b/share/cmake-3.10/Modules/FindBLAS.cmake
new file mode 100644
index 0000000..2684617
--- /dev/null
+++ b/share/cmake-3.10/Modules/FindBLAS.cmake
@@ -0,0 +1,712 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#.rst:
+# FindBLAS
+# --------
+#
+# Find BLAS library
+#
+# This module finds an installed fortran library that implements the
+# BLAS linear-algebra interface (see http://www.netlib.org/blas/).  The
+# list of libraries searched for is taken from the autoconf macro file,
+# acx_blas.m4 (distributed at
+# http://ac-archive.sourceforge.net/ac-archive/acx_blas.html).
+#
+# This module sets the following variables:
+#
+# ::
+#
+#   BLAS_FOUND - set to true if a 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
+#   BLAS95_LIBRARIES - uncached list of libraries (using full path name)
+#     to link against to use BLAS95 interface
+#   BLAS95_FOUND - set to true if a library implementing the BLAS f95 interface
+#     is found
+#   BLA_STATIC  if set on this determines what kind of linkage we do (static)
+#   BLA_VENDOR  if set checks only the specified vendor, if not set checks
+#      all the possibilities
+#   BLA_F95     if set on tries to find the f95 interfaces for BLAS/LAPACK
+#
+# List of vendors (BLA_VENDOR) valid in this module:
+#
+# * Goto
+# * OpenBLAS
+# * ATLAS PhiPACK
+# * CXML
+# * DXML
+# * SunPerf
+# * SCSL
+# * SGIMATH
+# * IBMESSL
+# * Intel10_32 (intel mkl v10 32 bit)
+# * Intel10_64lp (intel mkl v10 64 bit, lp thread model, lp64 model)
+# * Intel10_64lp_seq (intel mkl v10 64 bit, sequential code, lp64 model)
+# * Intel (older versions of mkl 32 and 64 bit)
+# * ACML
+# * ACML_MP
+# * ACML_GPU
+# * Apple
+# * NAS
+# * Generic
+#
+# .. note::
+#
+#   C/CXX should be enabled to use Intel mkl
+#
+
+include(${CMAKE_CURRENT_LIST_DIR}/CheckFunctionExists.cmake)
+include(${CMAKE_CURRENT_LIST_DIR}/CheckFortranFunctionExists.cmake)
+include(${CMAKE_CURRENT_LIST_DIR}/CMakePushCheckState.cmake)
+cmake_push_check_state()
+set(CMAKE_REQUIRED_QUIET ${BLAS_FIND_QUIETLY})
+
+set(_blas_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
+
+# 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()
+
+macro(Check_Fortran_Libraries LIBRARIES _prefix _name _flags _list _thread)
+# 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.
+
+set(_libdir ${ARGN})
+
+set(_libraries_work TRUE)
+set(${LIBRARIES})
+set(_combined_name)
+if (NOT _libdir)
+  if (WIN32)
+    set(_libdir ENV LIB)
+  elseif (APPLE)
+    set(_libdir ENV DYLD_LIBRARY_PATH)
+  else ()
+    set(_libdir ENV LD_LIBRARY_PATH)
+  endif ()
+endif ()
+
+foreach(_library ${_list})
+  set(_combined_name ${_combined_name}_${_library})
+
+  if(_libraries_work)
+    if (BLA_STATIC)
+      if (WIN32)
+        set(CMAKE_FIND_LIBRARY_SUFFIXES .lib ${CMAKE_FIND_LIBRARY_SUFFIXES})
+      endif ()
+      if (APPLE)
+        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 ()
+    find_library(${_prefix}_${_library}_LIBRARY
+      NAMES ${_library}
+      PATHS ${_libdir}
+      )
+    mark_as_advanced(${_prefix}_${_library}_LIBRARY)
+    set(${LIBRARIES} ${${LIBRARIES}} ${${_prefix}_${_library}_LIBRARY})
+    set(_libraries_work ${${_prefix}_${_library}_LIBRARY})
+  endif()
+endforeach()
+if(_libraries_work)
+  # Test this combination of libraries.
+  set(CMAKE_REQUIRED_LIBRARIES ${_flags} ${${LIBRARIES}} ${_thread})
+#  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)
+  mark_as_advanced(${_prefix}${_combined_name}_WORKS)
+  set(_libraries_work ${${_prefix}${_combined_name}_WORKS})
+endif()
+if(NOT _libraries_work)
+  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 ()
+
+if (BLA_VENDOR STREQUAL "Goto" OR BLA_VENDOR STREQUAL "All")
+ if(NOT BLAS_LIBRARIES)
+  # gotoblas (http://www.tacc.utexas.edu/tacc-projects/gotoblas2)
+  check_fortran_libraries(
+  BLAS_LIBRARIES
+  BLAS
+  sgemm
+  ""
+  "goto2"
+  ""
+  )
+ endif()
+endif ()
+
+if (BLA_VENDOR STREQUAL "OpenBLAS" OR BLA_VENDOR STREQUAL "All")
+ if(NOT BLAS_LIBRARIES)
+  # OpenBLAS (http://www.openblas.net)
+  check_fortran_libraries(
+  BLAS_LIBRARIES
+  BLAS
+  sgemm
+  ""
+  "openblas"
+  ""
+  )
+ endif()
+endif ()
+
+if (BLA_VENDOR STREQUAL "ATLAS" OR BLA_VENDOR STREQUAL "All")
+ if(NOT BLAS_LIBRARIES)
+  # BLAS in ATLAS library? (http://math-atlas.sourceforge.net/)
+  check_fortran_libraries(
+  BLAS_LIBRARIES
+  BLAS
+  dgemm
+  ""
+  "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_fortran_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_fortran_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_fortran_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_fortran_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_fortran_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_fortran_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_fortran_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_fortran_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_fortran_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_fortran_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_fortran_libraries(
+  BLAS_LIBRARIES
+  BLAS
+  sgemm
+  ""
+  "acml;acml_mv"
+  ""
+  )
+ endif()
+ if(NOT BLAS_LIBRARIES)
+  check_fortran_libraries(
+  BLAS_LIBRARIES
+  BLAS
+  sgemm
+  ""
+  "acml_mp;acml_mv"
+  ""
+  )
+ endif()
+ if(NOT BLAS_LIBRARIES)
+  check_fortran_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_fortran_libraries(
+  BLAS_LIBRARIES
+  BLAS
+  dgemm
+  ""
+  "Accelerate"
+  ""
+  )
+ endif()
+endif ()
+
+if (BLA_VENDOR STREQUAL "NAS" OR BLA_VENDOR STREQUAL "All")
+ if ( NOT BLAS_LIBRARIES )
+    check_fortran_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_fortran_libraries(
+  BLAS_LIBRARIES
+  BLAS
+  sgemm
+  ""
+  "blas"
+  ""
+  )
+ endif()
+endif ()
+
+#BLAS in intel mkl 10 library? (em64t 64bit)
+if (BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All")
+ if (NOT WIN32)
+  set(LM "-lm")
+ endif ()
+ if (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(BLAS_SEARCH_LIBS "")
+
+  if(BLA_F95)
+    set(BLAS_mkl_SEARCH_SYMBOL SGEMM)
+    set(_LIBRARIES BLAS95_LIBRARIES)
+    if (WIN32)
+      if (BLA_STATIC)
+        set(BLAS_mkl_DLL_SUFFIX "")
+      else()
+        set(BLAS_mkl_DLL_SUFFIX "_dll")
+      endif()
+
+      # 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_64lp" OR BLA_VENDOR STREQUAL "All")
+        list(APPEND BLAS_SEARCH_LIBS_WIN_MAIN
+          "mkl_blas95_lp64${BLAS_mkl_DLL_SUFFIX} mkl_intel_lp64${BLAS_mkl_DLL_SUFFIX}")
+      endif ()
+
+      # Add threading/sequential libs
+      set(BLAS_SEARCH_LIBS_WIN_THREAD "")
+      if (BLA_VENDOR MATCHES "_seq$" OR BLA_VENDOR STREQUAL "All")
+        list(APPEND BLAS_SEARCH_LIBS_WIN_THREAD
+          "mkl_sequential${BLAS_mkl_DLL_SUFFIX}")
+      endif()
+      if (NOT BLA_VENDOR MATCHES "_seq$" 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()
+
+      # 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")
+        list(APPEND BLAS_SEARCH_LIBS
+          "mkl_blas95 mkl_intel mkl_intel_thread mkl_core guide")
+      endif ()
+      if (BLA_VENDOR STREQUAL "Intel10_64lp" OR BLA_VENDOR STREQUAL "All")
+        # old version
+        list(APPEND BLAS_SEARCH_LIBS
+          "mkl_blas95 mkl_intel_lp64 mkl_intel_thread mkl_core guide")
+
+        # mkl >= 10.3
+        if (CMAKE_C_COMPILER MATCHES ".+gcc")
+          list(APPEND BLAS_SEARCH_LIBS
+            "mkl_blas95_lp64 mkl_intel_lp64 mkl_gnu_thread mkl_core gomp")
+        else ()
+          list(APPEND BLAS_SEARCH_LIBS
+            "mkl_blas95_lp64 mkl_intel_lp64 mkl_intel_thread mkl_core iomp5")
+        endif ()
+      endif ()
+      if (BLA_VENDOR STREQUAL "Intel10_64lp_seq" OR BLA_VENDOR STREQUAL "All")
+        list(APPEND BLAS_SEARCH_LIBS
+          "mkl_intel_lp64 mkl_sequential mkl_core")
+      endif ()
+    endif ()
+  else ()
+    set(BLAS_mkl_SEARCH_SYMBOL sgemm)
+    set(_LIBRARIES BLAS_LIBRARIES)
+    if (WIN32)
+      if (BLA_STATIC)
+        set(BLAS_mkl_DLL_SUFFIX "")
+      else()
+        set(BLAS_mkl_DLL_SUFFIX "_dll")
+      endif()
+
+      # 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_64lp" OR BLA_VENDOR STREQUAL "All")
+        list(APPEND BLAS_SEARCH_LIBS_WIN_MAIN
+          "mkl_intel_lp64${BLAS_mkl_DLL_SUFFIX}")
+      endif ()
+
+      # Add threading/sequential libs
+      set(BLAS_SEARCH_LIBS_WIN_THREAD "")
+      if (NOT BLA_VENDOR MATCHES "_seq$" 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 "_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")
+        list(APPEND BLAS_SEARCH_LIBS
+          "mkl_intel mkl_intel_thread mkl_core guide")
+      endif ()
+      if (BLA_VENDOR STREQUAL "Intel10_64lp" OR BLA_VENDOR STREQUAL "All")
+
+        # old version
+        list(APPEND BLAS_SEARCH_LIBS
+          "mkl_intel_lp64 mkl_intel_thread mkl_core guide")
+
+        # mkl >= 10.3
+        if (CMAKE_C_COMPILER MATCHES ".+gcc")
+          list(APPEND BLAS_SEARCH_LIBS
+            "mkl_intel_lp64 mkl_gnu_thread mkl_core gomp")
+        else ()
+          list(APPEND BLAS_SEARCH_LIBS
+            "mkl_intel_lp64 mkl_intel_thread mkl_core iomp5")
+        endif ()
+      endif ()
+      if (BLA_VENDOR STREQUAL "Intel10_64lp_seq" OR BLA_VENDOR STREQUAL "All")
+        list(APPEND BLAS_SEARCH_LIBS
+          "mkl_intel_lp64 mkl_sequential mkl_core")
+      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 ()
+
+  foreach (IT ${BLAS_SEARCH_LIBS})
+    string(REPLACE " " ";" SEARCH_LIBS ${IT})
+    if (${_LIBRARIES})
+    else ()
+      check_fortran_libraries(
+        ${_LIBRARIES}
+        BLAS
+        ${BLAS_mkl_SEARCH_SYMBOL}
+        ""
+        "${SEARCH_LIBS}"
+        "${CMAKE_THREAD_LIBS_INIT};${LM}"
+        )
+    endif ()
+  endforeach ()
+
+ endif ()
+endif ()
+
+
+if(BLA_F95)
+ if(BLAS95_LIBRARIES)
+    set(BLAS95_FOUND TRUE)
+  else()
+    set(BLAS95_FOUND FALSE)
+  endif()
+
+  if(NOT BLAS_FIND_QUIETLY)
+    if(BLAS95_FOUND)
+      message(STATUS "A library with BLAS95 API found.")
+    else()
+      if(BLAS_FIND_REQUIRED)
+        message(FATAL_ERROR
+        "A required library with BLAS95 API not found. Please specify library location.")
+      else()
+        message(STATUS
+        "A library with BLAS95 API not found. Please specify library location.")
+      endif()
+    endif()
+  endif()
+  set(BLAS_FOUND TRUE)
+  set(BLAS_LIBRARIES "${BLAS95_LIBRARIES}")
+else()
+  if(BLAS_LIBRARIES)
+    set(BLAS_FOUND TRUE)
+  else()
+    set(BLAS_FOUND FALSE)
+  endif()
+
+  if(NOT BLAS_FIND_QUIETLY)
+    if(BLAS_FOUND)
+      message(STATUS "A library with BLAS API found.")
+    else()
+      if(BLAS_FIND_REQUIRED)
+        message(FATAL_ERROR
+        "A required library with BLAS API not found. Please specify library location."
+        )
+      else()
+        message(STATUS
+        "A library with BLAS API not found. Please specify library location."
+        )
+      endif()
+    endif()
+  endif()
+endif()
+
+cmake_pop_check_state()
+set(CMAKE_FIND_LIBRARY_SUFFIXES ${_blas_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
diff --git a/share/cmake-3.10/Modules/FindBZip2.cmake b/share/cmake-3.10/Modules/FindBZip2.cmake
new file mode 100644
index 0000000..d2307f1
--- /dev/null
+++ b/share/cmake-3.10/Modules/FindBZip2.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:
+# 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_DIR - the BZip2 include directory
+#   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 (since CMake 2.8.8)
+
+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 ${_BZIP2_PATHS} PATH_SUFFIXES lib)
+    find_library(BZIP2_LIBRARY_DEBUG NAMES bz2d bzip2d ${_BZIP2_PATHS} PATH_SUFFIXES lib)
+
+    include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+    SELECT_LIBRARY_CONFIGURATIONS(BZIP2)
+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)
+   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.10/Modules/FindBacktrace.cmake b/share/cmake-3.10/Modules/FindBacktrace.cmake
new file mode 100644
index 0000000..59ebdc2
--- /dev/null
+++ b/share/cmake-3.10/Modules/FindBacktrace.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:
+# FindBacktrace
+# -------------
+#
+# Find provider for backtrace(3).
+#
+# Checks if OS supports backtrace(3) via either libc or custom library.
+# This module defines the following variables:
+#
+# ``Backtrace_HEADER``
+#   The header file needed for backtrace(3). Cached.
+#   Could be forcibly set by user.
+# ``Backtrace_INCLUDE_DIRS``
+#   The include directories needed to use backtrace(3) header.
+# ``Backtrace_LIBRARIES``
+#   The libraries (linker flags) needed to use backtrace(3), if any.
+# ``Backtrace_FOUND``
+#   Is set if and only if backtrace(3) support detected.
+#
+# The following cache variables are also available to set or use:
+#
+# ``Backtrace_LIBRARY``
+#   The external library providing backtrace, if any.
+# ``Backtrace_INCLUDE_DIR``
+#   The directory holding the backtrace(3) header.
+#
+# Typical usage is to generate of header file using configure_file() with the
+# contents like the following::
+#
+#  #cmakedefine01 Backtrace_FOUND
+#  #if Backtrace_FOUND
+#  # include <${Backtrace_HEADER}>
+#  #endif
+#
+# And then reference that generated header file in actual source.
+
+include(CMakePushCheckState)
+include(CheckSymbolExists)
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+
+# List of variables to be provided to find_package_handle_standard_args()
+set(_Backtrace_STD_ARGS Backtrace_INCLUDE_DIR)
+
+if(Backtrace_HEADER)
+  set(_Backtrace_HEADER_TRY "${Backtrace_HEADER}")
+else(Backtrace_HEADER)
+  set(_Backtrace_HEADER_TRY "execinfo.h")
+endif(Backtrace_HEADER)
+
+find_path(Backtrace_INCLUDE_DIR "${_Backtrace_HEADER_TRY}")
+set(Backtrace_INCLUDE_DIRS ${Backtrace_INCLUDE_DIR})
+
+if (NOT DEFINED Backtrace_LIBRARY)
+  # First, check if we already have backtrace(), e.g., in libc
+  cmake_push_check_state(RESET)
+  set(CMAKE_REQUIRED_INCLUDES ${Backtrace_INCLUDE_DIRS})
+  set(CMAKE_REQUIRED_QUIET ${Backtrace_FIND_QUIETLY})
+  check_symbol_exists("backtrace" "${_Backtrace_HEADER_TRY}" _Backtrace_SYM_FOUND)
+  cmake_pop_check_state()
+endif()
+
+if(_Backtrace_SYM_FOUND)
+  # Avoid repeating the message() call below each time CMake is run.
+  if(NOT Backtrace_FIND_QUIETLY AND NOT DEFINED Backtrace_LIBRARY)
+    message(STATUS "backtrace facility detected in default set of libraries")
+  endif()
+  set(Backtrace_LIBRARY "" CACHE FILEPATH "Library providing backtrace(3), empty for default set of libraries")
+else()
+  # Check for external library, for non-glibc systems
+  if(Backtrace_INCLUDE_DIR)
+    # OpenBSD has libbacktrace renamed to libexecinfo
+    find_library(Backtrace_LIBRARY "execinfo")
+  elseif()     # respect user wishes
+    set(_Backtrace_HEADER_TRY "backtrace.h")
+    find_path(Backtrace_INCLUDE_DIR ${_Backtrace_HEADER_TRY})
+    find_library(Backtrace_LIBRARY "backtrace")
+  endif()
+
+  # Prepend list with library path as it's more common practice
+  set(_Backtrace_STD_ARGS Backtrace_LIBRARY ${_Backtrace_STD_ARGS})
+endif()
+
+set(Backtrace_LIBRARIES ${Backtrace_LIBRARY})
+set(Backtrace_HEADER "${_Backtrace_HEADER_TRY}" CACHE STRING "Header providing backtrace(3) facility")
+
+find_package_handle_standard_args(Backtrace FOUND_VAR Backtrace_FOUND REQUIRED_VARS ${_Backtrace_STD_ARGS})
+mark_as_advanced(Backtrace_HEADER Backtrace_INCLUDE_DIR Backtrace_LIBRARY)
diff --git a/share/cmake-3.10/Modules/FindBoost.cmake b/share/cmake-3.10/Modules/FindBoost.cmake
new file mode 100644
index 0000000..88d14ab
--- /dev/null
+++ b/share/cmake-3.10/Modules/FindBoost.cmake
@@ -0,0 +1,1982 @@
+# 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.36.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"
+#
+# 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          - BOOST_VERSION value from boost/version.hpp
+#   Boost_LIB_VERSION      - Version string appended to library filenames
+#   Boost_MAJOR_VERSION    - Boost major version number (X in X.y.z)
+#   Boost_MINOR_VERSION    - Boost minor version number (Y in x.Y.z)
+#   Boost_SUBMINOR_VERSION - Boost subminor version number (Z in x.y.Z)
+#   Boost_LIB_DIAGNOSTIC_DEFINITIONS (Windows)
+#                          - Pass to add_definitions() to have diagnostic
+#                            information about Boost's automatic linking
+#                            displayed during compilation
+#
+# 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::boost                  - Target for header-only dependencies
+#                                   (Boost include directory)
+#   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 find_package and if
+# Boost::system is not added to 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
+# 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_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_DETAILED_FAILURE_MSG
+#                            - Set to ON to add detailed information to the
+#                              failure message even when the REQUIRED option
+#                              is not given to the find_package call.
+#   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.42.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 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.36.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 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.
+
+# Save project's policies
+cmake_policy(PUSH)
+cmake_policy(SET CMP0057 NEW) # if IN_LIST
+
+#-------------------------------------------------------------------------------
+# Before we go searching, check whether boost-cmake is available, unless the
+# user specifically asked NOT to search for boost-cmake.
+#
+# 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)
+  mark_as_advanced(Boost_DIR)
+
+  # If we found boost-cmake, then we're done.  Print out what we found.
+  # Otherwise let the rest of the module try to find it.
+  if (Boost_FOUND)
+    message(STATUS "Boost ${Boost_FIND_VERSION} found.")
+    if (Boost_FIND_COMPONENTS)
+      message(STATUS "Found Boost components:\n   ${Boost_FIND_COMPONENTS}")
+    endif()
+    # Restore project's policies
+    cmake_policy(POP)
+    return()
+  endif()
+endif()
+
+
+#-------------------------------------------------------------------------------
+#  FindBoost functions & macros
+#
+
+############################################
+#
+# 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 supports configuration types then set
+      # optimized and debug libraries, or if the CMAKE_BUILD_TYPE has a value
+      if(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
+        set(Boost_${basename}_LIBRARY optimized ${Boost_${basename}_LIBRARY_RELEASE} debug ${Boost_${basename}_LIBRARY_DEBUG})
+      else()
+        # if there are no configuration types and CMAKE_BUILD_TYPE has no value
+        # then 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)
+    if(Boost_DEBUG)
+      message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+        " Boost_LIBRARY_DIR_${build_type} = ${Boost_LIBRARY_DIR_${build_type}}"
+        " _boost_LIBRARY_SEARCH_DIRS_${build_type} = ${_boost_LIBRARY_SEARCH_DIRS_${build_type}}")
+    endif()
+  endif()
+endmacro()
+
+#-------------------------------------------------------------------------------
+
+#
+# Runs compiler with "-dumpversion" and parses major/minor
+# version with a regex.
+#
+function(_Boost_COMPILER_DUMPVERSION _OUTPUT_VERSION)
+
+  exec_program(${CMAKE_CXX_COMPILER}
+    ARGS ${CMAKE_CXX_COMPILER_ARG1} -dumpversion
+    OUTPUT_VARIABLE _boost_COMPILER_VERSION
+  )
+  string(REGEX REPLACE "([0-9])\\.([0-9])(\\.[0-9])?" "\\1\\2"
+    _boost_COMPILER_VERSION ${_boost_COMPILER_VERSION})
+
+  set(${_OUTPUT_VERSION} ${_boost_COMPILER_VERSION} 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(CMAKE_CXX_COMPILER_ID STREQUAL "Intel"
+      OR CMAKE_CXX_COMPILER MATCHES "icl"
+      OR CMAKE_CXX_COMPILER MATCHES "icpc")
+    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")
+    if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.10)
+      set(_boost_COMPILER "-vc141;-vc140")
+    elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19)
+      set(_boost_COMPILER "-vc140")
+    elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 18)
+      set(_boost_COMPILER "-vc120")
+    elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 17)
+      set(_boost_COMPILER "-vc110")
+    elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16)
+      set(_boost_COMPILER "-vc100")
+    elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15)
+      set(_boost_COMPILER "-vc90")
+    elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 14)
+      set(_boost_COMPILER "-vc80")
+    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()
+  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_MAJOR_VERSION}.${Boost_MINOR_VERSION} VERSION_LESS 1.34)
+        set(_boost_COMPILER "-mgw") # no GCC version encoding prior to 1.34
+    else()
+      _Boost_COMPILER_DUMPVERSION(_boost_COMPILER_VERSION)
+      set(_boost_COMPILER "-mgw${_boost_COMPILER_VERSION}")
+    endif()
+  elseif (UNIX)
+    if (CMAKE_COMPILER_IS_GNUCXX)
+      if(${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION} VERSION_LESS 1.34)
+        set(_boost_COMPILER "-gcc") # no GCC version encoding prior to 1.34
+      else()
+        _Boost_COMPILER_DUMPVERSION(_boost_COMPILER_VERSION)
+        # Determine which version of GCC we have.
+        if(APPLE)
+          if(Boost_MINOR_VERSION)
+            if(${Boost_MINOR_VERSION} GREATER 35)
+              # In Boost 1.36.0 and newer, the mangled compiler name used
+              # on Mac OS X/Darwin is "xgcc".
+              set(_boost_COMPILER "-xgcc${_boost_COMPILER_VERSION}")
+            else()
+              # In Boost <= 1.35.0, there is no mangled compiler name for
+              # the Mac OS X/Darwin version of GCC.
+              set(_boost_COMPILER "")
+            endif()
+          else()
+            # We don't know the Boost version, so assume it's
+            # pre-1.36.0.
+            set(_boost_COMPILER "")
+          endif()
+        else()
+          set(_boost_COMPILER "-gcc${_boost_COMPILER_VERSION}")
+        endif()
+      endif()
+    endif ()
+  else()
+    # TODO at least Boost_DEBUG here?
+    set(_boost_COMPILER "")
+  endif()
+  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 VERSION_LESS \10\20\3 AND Boost_VERSION 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, so 106000 is the needed version
+  # number).  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.
+  set(_Boost_IMPORTED_TARGETS TRUE)
+  if(Boost_VERSION VERSION_LESS 103300)
+    message(WARNING "Imported targets and dependency information not available for Boost version ${Boost_VERSION} (all versions older than 1.33)")
+    set(_Boost_IMPORTED_TARGETS FALSE)
+  elseif(NOT Boost_VERSION VERSION_LESS 103300 AND Boost_VERSION VERSION_LESS 103500)
+    set(_Boost_IOSTREAMS_DEPENDENCIES regex thread)
+    set(_Boost_REGEX_DEPENDENCIES thread)
+    set(_Boost_WAVE_DEPENDENCIES filesystem thread)
+    set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+  elseif(NOT Boost_VERSION VERSION_LESS 103500 AND Boost_VERSION VERSION_LESS 103600)
+    set(_Boost_FILESYSTEM_DEPENDENCIES system)
+    set(_Boost_IOSTREAMS_DEPENDENCIES regex)
+    set(_Boost_MPI_DEPENDENCIES serialization)
+    set(_Boost_MPI_PYTHON_DEPENDENCIES python mpi serialization)
+    set(_Boost_WAVE_DEPENDENCIES filesystem system thread)
+    set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+  elseif(NOT Boost_VERSION VERSION_LESS 103600 AND Boost_VERSION VERSION_LESS 103800)
+    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 mpi serialization)
+    set(_Boost_WAVE_DEPENDENCIES filesystem system thread)
+    set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+  elseif(NOT Boost_VERSION VERSION_LESS 103800 AND Boost_VERSION VERSION_LESS 104300)
+    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 mpi serialization)
+    set(_Boost_THREAD_DEPENDENCIES date_time)
+    set(_Boost_WAVE_DEPENDENCIES filesystem system thread date_time)
+    set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+  elseif(NOT Boost_VERSION VERSION_LESS 104300 AND Boost_VERSION VERSION_LESS 104400)
+    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 mpi serialization)
+    set(_Boost_THREAD_DEPENDENCIES date_time)
+    set(_Boost_WAVE_DEPENDENCIES filesystem system thread date_time)
+    set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+  elseif(NOT Boost_VERSION VERSION_LESS 104400 AND Boost_VERSION VERSION_LESS 104500)
+    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 mpi serialization)
+    set(_Boost_THREAD_DEPENDENCIES date_time)
+    set(_Boost_WAVE_DEPENDENCIES serialization filesystem system thread date_time)
+    set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+  elseif(NOT Boost_VERSION VERSION_LESS 104500 AND Boost_VERSION VERSION_LESS 104700)
+    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 mpi serialization)
+    set(_Boost_THREAD_DEPENDENCIES date_time)
+    set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread date_time)
+    set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+  elseif(NOT Boost_VERSION VERSION_LESS 104700 AND Boost_VERSION VERSION_LESS 104800)
+    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 mpi serialization)
+    set(_Boost_THREAD_DEPENDENCIES date_time)
+    set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread date_time)
+    set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
+  elseif(NOT Boost_VERSION VERSION_LESS 104800 AND Boost_VERSION VERSION_LESS 105000)
+    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 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(NOT Boost_VERSION VERSION_LESS 105000 AND Boost_VERSION VERSION_LESS 105300)
+    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 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(NOT Boost_VERSION VERSION_LESS 105300 AND Boost_VERSION VERSION_LESS 105400)
+    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 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(NOT Boost_VERSION VERSION_LESS 105400 AND Boost_VERSION VERSION_LESS 105500)
+    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 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(NOT Boost_VERSION VERSION_LESS 105500 AND Boost_VERSION VERSION_LESS 105600)
+    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 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(NOT Boost_VERSION VERSION_LESS 105600 AND Boost_VERSION VERSION_LESS 105900)
+    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 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(NOT Boost_VERSION VERSION_LESS 105900 AND Boost_VERSION VERSION_LESS 106000)
+    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 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(NOT Boost_VERSION VERSION_LESS 106000 AND Boost_VERSION VERSION_LESS 106100)
+    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 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(NOT Boost_VERSION VERSION_LESS 106100 AND Boost_VERSION VERSION_LESS 106200)
+    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 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(NOT Boost_VERSION VERSION_LESS 106200 AND Boost_VERSION VERSION_LESS 106300)
+    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 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(NOT Boost_VERSION VERSION_LESS 106300 AND Boost_VERSION VERSION_LESS 106500)
+    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 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)
+  else()
+    if(NOT Boost_VERSION VERSION_LESS 106500)
+      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 mpi serialization)
+      set(_Boost_NUMPY_DEPENDENCIES python)
+      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)
+    endif()
+    if(NOT Boost_VERSION VERSION_LESS 106600)
+      message(WARNING "New Boost version may have incorrect or missing dependencies and imported targets")
+      set(_Boost_IMPORTED_TARGETS FALSE)
+    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)
+  # 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_CONTEXT_HEADERS             "boost/context/all.hpp")
+  set(_Boost_COROUTINE_HEADERS           "boost/coroutine/all.hpp")
+  set(_Boost_EXCEPTION_HEADERS           "boost/exception/exception.hpp")
+  set(_Boost_DATE_TIME_HEADERS           "boost/date_time/date.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_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_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`.
+#
+function(_Boost_COMPILER_FEATURES component _ret)
+  # Boost >= 1.62 and < 1.65
+  if(NOT Boost_VERSION VERSION_LESS 106200 AND Boost_VERSION VERSION_LESS 106500)
+    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
+    )
+  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(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.10)
+      list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-14.1)
+      list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-14.0)
+    elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19)
+      list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-14.0)
+    elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 18)
+      list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-12.0)
+    elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 17)
+      list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-11.0)
+    elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16)
+      list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-10.0)
+    elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15)
+      list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-9.0)
+    elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 14)
+      list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-8.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.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()
+
+# The reason that we failed to find Boost. This will be set to a
+# user-friendly message when we fail to find some necessary piece of
+# Boost.
+set(Boost_ERROR_REASON)
+
+if(Boost_DEBUG)
+  # Output some of their choices
+  message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                 "_boost_TEST_VERSIONS = ${_boost_TEST_VERSIONS}")
+  message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                 "Boost_USE_MULTITHREADED = ${Boost_USE_MULTITHREADED}")
+  message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                 "Boost_USE_STATIC_LIBS = ${Boost_USE_STATIC_LIBS}")
+  message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                 "Boost_USE_STATIC_RUNTIME = ${Boost_USE_STATIC_RUNTIME}")
+  message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                 "Boost_ADDITIONAL_VERSIONS = ${Boost_ADDITIONAL_VERSIONS}")
+  message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                 "Boost_NO_SYSTEM_PATHS = ${Boost_NO_SYSTEM_PATHS}")
+endif()
+
+# 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)
+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")
+  set_target_properties(Boost::dynamic_linking PROPERTIES
+    INTERFACE_COMPILE_DEFINITIONS "BOOST_ALL_DYN_LINK")
+endif()
+
+_Boost_CHECK_SPELLING(Boost_ROOT)
+_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
+  )
+
+if(Boost_DEBUG)
+  message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                 "Declared as CMake or Environmental Variables:")
+  message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                 "  BOOST_ROOT = ${BOOST_ROOT}")
+  message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                 "  BOOST_INCLUDEDIR = ${BOOST_INCLUDEDIR}")
+  message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                 "  BOOST_LIBRARYDIR = ${BOOST_LIBRARYDIR}")
+  message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                 "_boost_TEST_VERSIONS = ${_boost_TEST_VERSIONS}")
+endif()
+
+# ------------------------------------------------------------------------
+#  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_KNOWN_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()
+
+  if(Boost_DEBUG)
+    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                   "Include debugging info:")
+    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                   "  _boost_INCLUDE_SEARCH_DIRS = ${_boost_INCLUDE_SEARCH_DIRS}")
+    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                   "  _boost_PATH_SUFFIXES = ${_boost_PATH_SUFFIXES}")
+  endif()
+
+  # 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
+# ------------------------------------------------------------------------
+
+# Set Boost_FOUND based only on header location and version.
+# It will be updated below for component libraries.
+if(Boost_INCLUDE_DIR)
+  if(Boost_DEBUG)
+    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                   "location of version.hpp: ${Boost_INCLUDE_DIR}/boost/version.hpp")
+  endif()
+
+  # Extract Boost_VERSION and Boost_LIB_VERSION from version.hpp
+  set(Boost_VERSION 0)
+  set(Boost_LIB_VERSION "")
+  file(STRINGS "${Boost_INCLUDE_DIR}/boost/version.hpp" _boost_VERSION_HPP_CONTENTS REGEX "#define BOOST_(LIB_)?VERSION ")
+  set(_Boost_VERSION_REGEX "([0-9]+)")
+  set(_Boost_LIB_VERSION_REGEX "\"([0-9_]+)\"")
+  foreach(v VERSION LIB_VERSION)
+    if("${_boost_VERSION_HPP_CONTENTS}" MATCHES "#define BOOST_${v} ${_Boost_${v}_REGEX}")
+      set(Boost_${v} "${CMAKE_MATCH_1}")
+    endif()
+  endforeach()
+  unset(_boost_VERSION_HPP_CONTENTS)
+
+  math(EXPR Boost_MAJOR_VERSION "${Boost_VERSION} / 100000")
+  math(EXPR Boost_MINOR_VERSION "${Boost_VERSION} / 100 % 1000")
+  math(EXPR Boost_SUBMINOR_VERSION "${Boost_VERSION} % 100")
+
+  string(APPEND Boost_ERROR_REASON
+    "Boost version: ${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}\nBoost include path: ${Boost_INCLUDE_DIR}")
+  if(Boost_DEBUG)
+    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                   "version.hpp reveals boost "
+                   "${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}")
+  endif()
+
+  if(Boost_FIND_VERSION)
+    # Set Boost_FOUND based on requested version.
+    set(_Boost_VERSION "${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}")
+    if("${_Boost_VERSION}" VERSION_LESS "${Boost_FIND_VERSION}")
+      set(Boost_FOUND 0)
+      set(_Boost_VERSION_AGE "old")
+    elseif(Boost_FIND_VERSION_EXACT AND
+        NOT "${_Boost_VERSION}" VERSION_EQUAL "${Boost_FIND_VERSION}")
+      set(Boost_FOUND 0)
+      set(_Boost_VERSION_AGE "new")
+    else()
+      set(Boost_FOUND 1)
+    endif()
+    if(NOT Boost_FOUND)
+      # State that we found a version of Boost that is too new or too old.
+      string(APPEND Boost_ERROR_REASON
+        "\nDetected version of Boost is too ${_Boost_VERSION_AGE}. Requested version was ${Boost_FIND_VERSION_MAJOR}.${Boost_FIND_VERSION_MINOR}")
+      if (Boost_FIND_VERSION_PATCH)
+        string(APPEND Boost_ERROR_REASON
+          ".${Boost_FIND_VERSION_PATCH}")
+      endif ()
+      if (NOT Boost_FIND_VERSION_EXACT)
+        string(APPEND Boost_ERROR_REASON " (or newer)")
+      endif ()
+      string(APPEND Boost_ERROR_REASON ".")
+    endif ()
+  else()
+    # Caller will accept any Boost version.
+    set(Boost_FOUND 1)
+  endif()
+else()
+  set(Boost_FOUND 0)
+  string(APPEND Boost_ERROR_REASON
+    "Unable to find the Boost header files. Please set BOOST_ROOT to the root directory containing Boost or BOOST_INCLUDEDIR to the directory containing Boost's headers.")
+endif()
+
+# ------------------------------------------------------------------------
+#  Prefix initialization
+# ------------------------------------------------------------------------
+
+set(Boost_LIB_PREFIX "")
+if ( (GHSMULTI AND Boost_USE_STATIC_LIBS) OR
+    (WIN32 AND Boost_USE_STATIC_LIBS AND NOT CYGWIN) )
+  set(Boost_LIB_PREFIX "lib")
+endif()
+
+if ( NOT Boost_NAMESPACE )
+  set(Boost_NAMESPACE "boost")
+endif()
+
+# ------------------------------------------------------------------------
+#  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})
+  if(Boost_DEBUG)
+    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                   "using user-specified Boost_COMPILER = ${_boost_COMPILER}")
+  endif()
+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)
+  if(Boost_DEBUG)
+    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+      "guessed _boost_COMPILER = ${_boost_COMPILER}")
+  endif()
+endif()
+
+set (_boost_MULTITHREADED "-mt")
+if( NOT Boost_USE_MULTITHREADED )
+  set (_boost_MULTITHREADED "")
+endif()
+if(Boost_DEBUG)
+  message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+    "_boost_MULTITHREADED = ${_boost_MULTITHREADED}")
+endif()
+
+#======================
+# Systematically build up the Boost ABI tag
+# http://boost.org/doc/libs/1_41_0/more/getting_started/windows.html#library-naming
+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 "${CMAKE_CXX_COMPILER}" MATCHES "icl"
+          OR "${CMAKE_CXX_COMPILER}" MATCHES "icpc")
+    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
+if(Boost_USE_STLPORT_DEPRECATED_NATIVE_IOSTREAMS)
+  string(APPEND _boost_RELEASE_ABI_TAG "n")
+  string(APPEND _boost_DEBUG_ABI_TAG "n")
+endif()
+
+if(Boost_DEBUG)
+  message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+    "_boost_RELEASE_ABI_TAG = ${_boost_RELEASE_ABI_TAG}")
+  message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+    "_boost_DEBUG_ABI_TAG = ${_boost_DEBUG_ABI_TAG}")
+endif()
+
+# ------------------------------------------------------------------------
+#  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}/..")
+    if( Boost_NO_SYSTEM_PATHS )
+      list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} NO_CMAKE_SYSTEM_PATH NO_SYSTEM_ENVIRONMENT_PATH)
+    else()
+      foreach(ver ${_Boost_KNOWN_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()
+
+if(Boost_DEBUG)
+  message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+    "_boost_LIBRARY_SEARCH_DIRS_RELEASE = ${_boost_LIBRARY_SEARCH_DIRS_RELEASE}"
+    "_boost_LIBRARY_SEARCH_DIRS_DEBUG   = ${_boost_LIBRARY_SEARCH_DIRS_DEBUG}")
+endif()
+
+# 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 AND Boost_FIND_COMPONENTS)
+   if(Boost_VERSION LESS 103500)
+     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()
+
+  # Consolidate and report component-specific hints.
+  if(_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT)
+    list(REMOVE_DUPLICATES _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT)
+    if(Boost_DEBUG)
+      message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+        "Component-specific library search paths for ${COMPONENT}: "
+        "${_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT}")
+    endif()
+  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")
+  endif()
+
+  #
+  # Find RELEASE libraries
+  #
+  unset(_boost_RELEASE_NAMES)
+  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_LIB_VERSION}
+      ${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_LIB_VERSION}
+    ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${COMPONENT}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}
+    ${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_LIB_VERSION}
+        ${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_LIB_VERSION}
+      ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${COMPONENT}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG} )
+  endif()
+  if(Boost_THREADAPI AND ${COMPONENT} STREQUAL "thread")
+     _Boost_PREPEND_LIST_WITH_THREADAPI(_boost_RELEASE_NAMES ${_boost_RELEASE_NAMES})
+  endif()
+  if(Boost_DEBUG)
+    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                   "Searching for ${UPPERCOMPONENT}_LIBRARY_RELEASE: ${_boost_RELEASE_NAMES}")
+  endif()
+
+  # 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(compiler IN LISTS _boost_COMPILER)
+    list(APPEND _boost_DEBUG_NAMES
+      ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${COMPONENT}${compiler}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG}-${Boost_LIB_VERSION}
+      ${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_LIB_VERSION}
+    ${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_LIB_VERSION}
+        ${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_LIB_VERSION}
+      ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${COMPONENT}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG} )
+  endif()
+  if(Boost_THREADAPI AND ${COMPONENT} STREQUAL "thread")
+     _Boost_PREPEND_LIST_WITH_THREADAPI(_boost_DEBUG_NAMES ${_boost_DEBUG_NAMES})
+  endif()
+  if(Boost_DEBUG)
+    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
+                   "Searching for ${UPPERCOMPONENT}_LIBRARY_DEBUG: ${_boost_DEBUG_NAMES}")
+  endif()
+
+  # 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()
+
+# The above setting of Boost_FOUND was based only on the header files.
+# Update it for the requested component libraries.
+if(Boost_FOUND)
+  # The headers were found.  Check for requested component libs.
+  set(_boost_CHECKED_COMPONENT FALSE)
+  set(_Boost_MISSING_COMPONENTS "")
+  foreach(COMPONENT ${Boost_FIND_COMPONENTS})
+    string(TOUPPER ${COMPONENT} COMPONENT)
+    set(_boost_CHECKED_COMPONENT TRUE)
+    if(NOT Boost_${COMPONENT}_FOUND)
+      string(TOLOWER ${COMPONENT} COMPONENT)
+      list(APPEND _Boost_MISSING_COMPONENTS ${COMPONENT})
+    endif()
+  endforeach()
+  if(_Boost_MISSING_COMPONENTS AND _Boost_EXTRA_FIND_COMPONENTS)
+    # Optional indirect dependencies are not counted as missing.
+    list(REMOVE_ITEM _Boost_MISSING_COMPONENTS ${_Boost_EXTRA_FIND_COMPONENTS})
+  endif()
+
+  if(Boost_DEBUG)
+    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] Boost_FOUND = ${Boost_FOUND}")
+  endif()
+
+  if (_Boost_MISSING_COMPONENTS)
+    set(Boost_FOUND 0)
+    # We were unable to find some libraries, so generate a sensible
+    # error message that lists the libraries we were unable to find.
+    string(APPEND Boost_ERROR_REASON
+      "\nCould not find the following")
+    if(Boost_USE_STATIC_LIBS)
+      string(APPEND Boost_ERROR_REASON " static")
+    endif()
+    string(APPEND Boost_ERROR_REASON
+      " Boost libraries:\n")
+    foreach(COMPONENT ${_Boost_MISSING_COMPONENTS})
+      string(TOUPPER ${COMPONENT} UPPERCOMPONENT)
+      string(APPEND Boost_ERROR_REASON
+        "        ${Boost_NAMESPACE}_${COMPONENT}${Boost_ERROR_REASON_${UPPERCOMPONENT}}\n")
+    endforeach()
+
+    list(LENGTH Boost_FIND_COMPONENTS Boost_NUM_COMPONENTS_WANTED)
+    list(LENGTH _Boost_MISSING_COMPONENTS Boost_NUM_MISSING_COMPONENTS)
+    if (${Boost_NUM_COMPONENTS_WANTED} EQUAL ${Boost_NUM_MISSING_COMPONENTS})
+      string(APPEND Boost_ERROR_REASON
+        "No Boost libraries were found. You may need to set BOOST_LIBRARYDIR to the directory containing Boost libraries or BOOST_ROOT to the location of Boost.")
+    else ()
+      string(APPEND Boost_ERROR_REASON
+        "Some (but not all) of the required Boost libraries were found. You may need to install these additional Boost libraries. Alternatively, set BOOST_LIBRARYDIR to the directory containing Boost libraries or BOOST_ROOT to the location of Boost.")
+    endif ()
+  endif ()
+
+  if( NOT Boost_LIBRARY_DIRS AND NOT _boost_CHECKED_COMPONENT )
+    # 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)
+  # For header-only libraries
+  if(NOT TARGET Boost::boost)
+    add_library(Boost::boost INTERFACE IMPORTED)
+    if(Boost_INCLUDE_DIRS)
+      set_target_properties(Boost::boost PROPERTIES
+        INTERFACE_INCLUDE_DIRECTORIES "${Boost_INCLUDE_DIRS}")
+    endif()
+  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()
+endif()
+
+# ------------------------------------------------------------------------
+#  Notification to end user about what was found
+# ------------------------------------------------------------------------
+
+set(Boost_LIBRARIES "")
+if(Boost_FOUND)
+  if(NOT Boost_FIND_QUIETLY)
+    message(STATUS "Boost version: ${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}")
+    if(Boost_FIND_COMPONENTS)
+      message(STATUS "Found the following Boost libraries:")
+    endif()
+  endif()
+  foreach( COMPONENT  ${Boost_FIND_COMPONENTS} )
+    string( TOUPPER ${COMPONENT} UPPERCOMPONENT )
+    if( Boost_${UPPERCOMPONENT}_FOUND )
+      if(NOT Boost_FIND_QUIETLY)
+        message (STATUS "  ${COMPONENT}")
+      endif()
+      list(APPEND Boost_LIBRARIES ${Boost_${UPPERCOMPONENT}_LIBRARY})
+    endif()
+  endforeach()
+else()
+  if(Boost_FIND_REQUIRED)
+    message(SEND_ERROR "Unable to find the requested Boost libraries.\n${Boost_ERROR_REASON}")
+  else()
+    if(NOT Boost_FIND_QUIETLY)
+      # we opt not to automatically output Boost_ERROR_REASON here as
+      # it could be quite lengthy and somewhat imposing in its requests
+      # Since Boost is not always a required dependency we'll leave this
+      # up to the end-user.
+      if(Boost_DEBUG OR Boost_DETAILED_FAILURE_MSG)
+        message(STATUS "Could NOT find Boost\n${Boost_ERROR_REASON}")
+      else()
+        message(STATUS "Could NOT find Boost")
+      endif()
+    endif()
+  endif()
+endif()
+
+# 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.10/Modules/FindBullet.cmake b/share/cmake-3.10/Modules/FindBullet.cmake
new file mode 100644
index 0000000..fc6695c
--- /dev/null
+++ b/share/cmake-3.10/Modules/FindBullet.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:
+# FindBullet
+# ----------
+#
+# Try to find the Bullet physics engine
+#
+#
+#
+# ::
+#
+#   This module defines the following variables
+#
+#
+#
+# ::
+#
+#   BULLET_FOUND - Was bullet found
+#   BULLET_INCLUDE_DIRS - the Bullet include directories
+#   BULLET_LIBRARIES - Link to this, by default it includes
+#                      all bullet components (Dynamics,
+#                      Collision, LinearMath, & SoftBody)
+#
+#
+#
+# ::
+#
+#   This module accepts the following variables
+#
+#
+#
+# ::
+#
+#   BULLET_ROOT - Can be set to bullet install path or Windows build path
+
+macro(_FIND_BULLET_LIBRARY _var)
+  find_library(${_var}
+     NAMES
+        ${ARGN}
+     HINTS
+        ${BULLET_ROOT}
+        ${BULLET_ROOT}/lib/Release
+        ${BULLET_ROOT}/lib/Debug
+        ${BULLET_ROOT}/out/release8/libs
+        ${BULLET_ROOT}/out/debug8/libs
+     PATH_SUFFIXES lib
+  )
+  mark_as_advanced(${_var})
+endmacro()
+
+macro(_BULLET_APPEND_LIBRARIES _list _release)
+   set(_debug ${_release}_DEBUG)
+   if(${_debug})
+      set(${_list} ${${_list}} optimized ${${_release}} debug ${${_debug}})
+   else()
+      set(${_list} ${${_list}} ${${_release}})
+   endif()
+endmacro()
+
+find_path(BULLET_INCLUDE_DIR NAMES btBulletCollisionCommon.h
+  HINTS
+    ${BULLET_ROOT}/include
+    ${BULLET_ROOT}/src
+  PATH_SUFFIXES bullet
+)
+
+# Find the libraries
+
+_FIND_BULLET_LIBRARY(BULLET_DYNAMICS_LIBRARY        BulletDynamics)
+_FIND_BULLET_LIBRARY(BULLET_DYNAMICS_LIBRARY_DEBUG  BulletDynamics_Debug BulletDynamics_d)
+_FIND_BULLET_LIBRARY(BULLET_COLLISION_LIBRARY       BulletCollision)
+_FIND_BULLET_LIBRARY(BULLET_COLLISION_LIBRARY_DEBUG BulletCollision_Debug BulletCollision_d)
+_FIND_BULLET_LIBRARY(BULLET_MATH_LIBRARY            BulletMath LinearMath)
+_FIND_BULLET_LIBRARY(BULLET_MATH_LIBRARY_DEBUG      BulletMath_Debug BulletMath_d LinearMath_Debug LinearMath_d)
+_FIND_BULLET_LIBRARY(BULLET_SOFTBODY_LIBRARY        BulletSoftBody)
+_FIND_BULLET_LIBRARY(BULLET_SOFTBODY_LIBRARY_DEBUG  BulletSoftBody_Debug BulletSoftBody_d)
+
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(Bullet DEFAULT_MSG
+    BULLET_DYNAMICS_LIBRARY BULLET_COLLISION_LIBRARY BULLET_MATH_LIBRARY
+    BULLET_SOFTBODY_LIBRARY BULLET_INCLUDE_DIR)
+
+set(BULLET_INCLUDE_DIRS ${BULLET_INCLUDE_DIR})
+if(BULLET_FOUND)
+   _BULLET_APPEND_LIBRARIES(BULLET_LIBRARIES BULLET_DYNAMICS_LIBRARY)
+   _BULLET_APPEND_LIBRARIES(BULLET_LIBRARIES BULLET_COLLISION_LIBRARY)
+   _BULLET_APPEND_LIBRARIES(BULLET_LIBRARIES BULLET_MATH_LIBRARY)
+   _BULLET_APPEND_LIBRARIES(BULLET_LIBRARIES BULLET_SOFTBODY_LIBRARY)
+endif()
diff --git a/share/cmake-3.10/Modules/FindCABLE.cmake b/share/cmake-3.10/Modules/FindCABLE.cmake
new file mode 100644
index 0000000..450e322
--- /dev/null
+++ b/share/cmake-3.10/Modules/FindCABLE.cmake
@@ -0,0 +1,81 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#.rst:
+# FindCABLE
+# ---------
+#
+# Find CABLE
+#
+# This module finds if CABLE is installed and determines where the
+# include files and libraries are.  This code sets the following
+# variables:
+#
+# ::
+#
+#   CABLE             the path to the cable executable
+#   CABLE_TCL_LIBRARY the path to the Tcl wrapper library
+#   CABLE_INCLUDE_DIR the path to the include directory
+#
+#
+#
+# To build Tcl wrappers, you should add shared library and link it to
+# ${CABLE_TCL_LIBRARY}.  You should also add ${CABLE_INCLUDE_DIR} as an
+# include directory.
+
+if(NOT CABLE)
+  find_path(CABLE_BUILD_DIR cableVersion.h)
+endif()
+
+if(CABLE_BUILD_DIR)
+  load_cache(${CABLE_BUILD_DIR}
+             EXCLUDE
+               BUILD_SHARED_LIBS
+               LIBRARY_OUTPUT_PATH
+               EXECUTABLE_OUTPUT_PATH
+               MAKECOMMAND
+               CMAKE_INSTALL_PREFIX
+             INCLUDE_INTERNALS
+               CABLE_LIBRARY_PATH
+               CABLE_EXECUTABLE_PATH)
+
+  if(CABLE_LIBRARY_PATH)
+    find_library(CABLE_TCL_LIBRARY NAMES CableTclFacility PATHS
+                 ${CABLE_LIBRARY_PATH}
+                 ${CABLE_LIBRARY_PATH}/*)
+  else()
+    find_library(CABLE_TCL_LIBRARY NAMES CableTclFacility PATHS
+                 ${CABLE_BINARY_DIR}/CableTclFacility
+                 ${CABLE_BINARY_DIR}/CableTclFacility/*)
+  endif()
+
+  if(CABLE_EXECUTABLE_PATH)
+    find_program(CABLE NAMES cable PATHS
+                 ${CABLE_EXECUTABLE_PATH}
+                 ${CABLE_EXECUTABLE_PATH}/*)
+  else()
+    find_program(CABLE NAMES cable PATHS
+                 ${CABLE_BINARY_DIR}/Executables
+                 ${CABLE_BINARY_DIR}/Executables/*)
+  endif()
+
+  find_path(CABLE_INCLUDE_DIR CableTclFacility/ctCalls.h
+            ${CABLE_SOURCE_DIR})
+else()
+  # Find the cable executable in the path.
+  find_program(CABLE NAMES cable)
+
+  # Get the path where the executable sits, but without the executable
+  # name on it.
+  get_filename_component(CABLE_ROOT_BIN ${CABLE} PATH)
+
+  # Find the cable include directory in a path relative to the cable
+  # executable.
+  find_path(CABLE_INCLUDE_DIR CableTclFacility/ctCalls.h
+            ${CABLE_ROOT_BIN}/../include/Cable)
+
+  # Find the WrapTclFacility library in a path relative to the cable
+  # executable.
+  find_library(CABLE_TCL_LIBRARY NAMES CableTclFacility PATHS
+               ${CABLE_ROOT_BIN}/../lib/Cable)
+endif()
diff --git a/share/cmake-3.10/Modules/FindCUDA.cmake b/share/cmake-3.10/Modules/FindCUDA.cmake
new file mode 100644
index 0000000..1c8ac26
--- /dev/null
+++ b/share/cmake-3.10/Modules/FindCUDA.cmake
@@ -0,0 +1,1988 @@
+#.rst:
+# FindCUDA
+# --------
+#
+# .. note::
+#
+#   The FindCUDA module has been superseded by first-class support
+#   for the CUDA language in CMake.  It is no longer necessary to
+#   use this module or call ``find_package(CUDA)``.  This module
+#   now exists only for compatibility with projects that have not
+#   been ported.
+#
+#   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`.
+#
+# 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 mac and should be reasonably up to date with CUDA C
+# releases.
+#
+# This script makes use of the standard 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 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 alphebetical 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, $(VCInstallDir)/bin for VS)
+#   -- 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
+#      $(VCInstallDir)/bin is a special value that expands out to the path when
+#      the command is run from within VS.
+#
+#   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 alphebetical 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 convience 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.
+#   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.
+#
+
+#   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
+set(CUDA_NVCC_FLAGS "" CACHE STRING "Semi-colon delimit multiple arguments.")
+
+if(CMAKE_GENERATOR MATCHES "Visual Studio")
+  set(CUDA_HOST_COMPILER "$(VCInstallDir)bin" 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")
+  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 "Propage 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
+  )
+
+# Makefile and similar generators don't define CMAKE_CONFIGURATION_TYPES, so we
+# need to add another entry for the CMAKE_BUILD_TYPE.  We also need to add the
+# standerd set of 4 build types (Debug, MinSizeRel, Release, and RelWithDebInfo)
+# for completeness.  We need run this loop in order to accomodate the addition
+# of extra configuration types.  Duplicate entries will be removed by
+# REMOVE_DUPLICATES.
+set(CUDA_configuration_types ${CMAKE_CONFIGURATION_TYPES} ${CMAKE_BUILD_TYPE} Debug MinSizeRel Release RelWithDebInfo)
+list(REMOVE_DUPLICATES CUDA_configuration_types)
+foreach(config ${CUDA_configuration_types})
+    string(TOUPPER ${config} config_upper)
+    set(CUDA_NVCC_FLAGS_${config_upper} "" CACHE STRING "Semi-colon delimit multiple arguments.")
+    mark_as_advanced(CUDA_NVCC_FLAGS_${config_upper})
+endforeach()
+
+###############################################################################
+###############################################################################
+# 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_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_path(CUDA_TOOLKIT_ROOT_DIR
+    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_path(CUDA_TOOLKIT_ROOT_DIR
+    NAMES nvcc nvcc.exe
+    PATHS /opt/cuda/bin
+          /usr/local/bin
+          /usr/local/cuda/bin
+    DOC "Toolkit location."
+    )
+
+  if (CUDA_TOOLKIT_ROOT_DIR)
+    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()
+
+  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
+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)
+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.  Here we look for pthreads.
+    if (DEFINED CMAKE_THREAD_PREFER_PTHREAD)
+      set(_cuda_cmake_thread_prefer_pthread ${CMAKE_THREAD_PREFER_PTHREAD})
+    endif()
+    set(CMAKE_THREAD_PREFER_PTHREAD 1)
+
+    # 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 (DEFINED _cuda_cmake_thread_prefer_pthread)
+      set(CMAKE_THREAD_PREFER_PTHREAD ${_cuda_cmake_thread_prefer_pthread})
+      unset(_cuda_cmake_thread_prefer_pthread)
+    else()
+      unset(CMAKE_THREAD_PREFER_PTHREAD)
+    endif()
+
+    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} ${CMAKE_THREAD_LIBS_INIT} ${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")
+  find_cuda_helper_libs(cublas_device)
+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)
+  find_cuda_helper_libs(nppicom)
+  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 splitted onto 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
+  # value of VCInstallDir from within VS.  Note that CCBIN is only used if
+  # -ccbin or --compiler-bindir isn't used and CUDA_HOST_COMPILER matches
+  # $(VCInstallDir)/bin.
+  if(CMAKE_GENERATOR MATCHES "Visual Studio")
+    set(ccbin_flags -D "\"CCBIN:PATH=$(VCInstallDir)bin\"" )
+  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})
+
+      # Convience 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