Răsfoiți Sursa

Merge topic 'gitlab-ci-lint'

4318e8ed35 gitlab-ci: add iwyu job
0866b9253b gitlab-ci: add initial clang-tidy build
0a5bcf97b9 gitlab-ci: add scripts for use by CI
960158b90d ci: add scripts to download build tools
6af91c7c4d ci: add an image for Debian 10
68903ae238 ci: add a Docker container for building CMake
3ac24a8a6e cmFunctionBlocker: include missing header
b745b8fd36 IWYU: mark includes needed for assert statements as needed
...

Acked-by: Kitware Robot <[email protected]>
Merge-request: !4643
Brad King 5 ani în urmă
părinte
comite
c09efe074d
36 a modificat fișierele cu 402 adăugiri și 16 ștergeri
  1. 97 0
      .gitlab-ci.yml
  2. 16 0
      .gitlab/ci/cmake.sh
  3. 3 0
      .gitlab/ci/configure_common.cmake
  4. 4 0
      .gitlab/ci/configure_debian10_iwyu.cmake
  5. 3 0
      .gitlab/ci/configure_fedora31_tidy.cmake
  6. 2 0
      .gitlab/ci/configure_sccache.cmake
  7. 30 0
      .gitlab/ci/ctest_build.cmake
  8. 32 0
      .gitlab/ci/ctest_configure.cmake
  9. 6 0
      .gitlab/ci/ctest_exclusions.cmake
  10. 24 0
      .gitlab/ci/ctest_test.cmake
  11. 15 0
      .gitlab/ci/docker/debian10/Dockerfile
  12. 22 0
      .gitlab/ci/docker/debian10/install_deps.sh
  13. 32 0
      .gitlab/ci/docker/debian10/install_iwyu.sh
  14. 5 0
      .gitlab/ci/docker/fedora31/Dockerfile
  15. 13 0
      .gitlab/ci/docker/fedora31/install_deps.sh
  16. 46 0
      .gitlab/ci/gitlab_ci.cmake
  17. 15 0
      .gitlab/ci/ninja.sh
  18. 16 0
      .gitlab/ci/sccache.sh
  19. 1 1
      Source/CPack/IFW/cmCPackIFWCommon.cxx
  20. 1 1
      Source/CTest/cmCTestMultiProcessHandler.cxx
  21. 1 1
      Source/CTest/cmCTestRunTest.cxx
  22. 1 1
      Source/CTest/cmCTestTestHandler.cxx
  23. 1 1
      Source/bindexplib.cxx
  24. 0 1
      Source/cmArgumentParser.cxx
  25. 1 1
      Source/cmForEachCommand.cxx
  26. 2 0
      Source/cmFunctionBlocker.cxx
  27. 1 1
      Source/cmGhsMultiTargetGenerator.cxx
  28. 1 1
      Source/cmMakefileTargetGenerator.cxx
  29. 1 1
      Source/cmStringAlgorithms.cxx
  30. 1 1
      Source/cmUVProcessChain.h
  31. 1 1
      Source/cmXMLWriter.h
  32. 1 1
      Tests/CMakeLib/testCTestBinPacker.cxx
  33. 1 1
      Tests/CMakeLib/testGccDepfileReader.cxx
  34. 1 1
      Tests/CMakeLib/testString.cxx
  35. 1 1
      Tests/RunCMake/CTestResourceAllocation/ctresalloc.cxx
  36. 4 0
      Utilities/IWYU/mapping.imp

+ 97 - 0
.gitlab-ci.yml

@@ -0,0 +1,97 @@
+.only_settings: &only_settings
+    - merge_requests
+    - branches@cmake/cmake
+    - tags@cmake/cmake
+
+.fedora31: &fedora31
+    image: "kitware/cmake:ci-fedora31-x86_64-2020-04-27"
+
+    variables:
+        GIT_CLONE_PATH: "$CI_BUILDS_DIR/gitlab-kitware-cmake ci"
+
+.debian10: &debian10
+    image: "kitware/cmake:ci-debian10-x86_64-2020-04-27"
+
+    variables:
+        GIT_CLONE_PATH: "$CI_BUILDS_DIR/gitlab-kitware-cmake ci"
+
+.debian10_iwyu: &debian10_iwyu
+    extends: .debian10
+
+    variables:
+        CMAKE_CONFIGURATION: debian10_iwyu
+        CTEST_NO_WARNINGS_ALLOWED: 1
+
+.fedora31_tidy: &fedora31_tidy
+    extends: .fedora31
+
+    variables:
+        CMAKE_CONFIGURATION: fedora31_tidy
+        CTEST_NO_WARNINGS_ALLOWED: 1
+
+before_script:
+    - .gitlab/ci/cmake.sh
+    - .gitlab/ci/ninja.sh
+    - export PATH=$PWD/.gitlab:$PWD/.gitlab/cmake/bin:$PATH
+    - cmake --version
+    - ninja --version
+
+.cmake_build_unix: &cmake_build_unix
+    stage: build
+    only: *only_settings
+    tags:
+        - build
+        - docker
+        - linux
+
+    script:
+        - .gitlab/ci/sccache.sh
+        - sccache --start-server
+        - sccache --show-stats
+        - "$LAUNCHER ctest -VV -S .gitlab/ci/ctest_configure.cmake"
+        - "$LAUNCHER ctest -VV -S .gitlab/ci/ctest_build.cmake"
+        - sccache --show-stats
+
+    interruptible: true
+
+stages:
+    - build
+    - test
+
+build:debian10-iwyu:
+    <<:
+        - *debian10_iwyu
+    stage: build
+    only: *only_settings
+    tags:
+        - build
+        - docker
+        - linux
+
+    script:
+        - .gitlab/ci/sccache.sh
+        - sccache --start-server
+        - sccache --show-stats
+        - "$LAUNCHER ctest -VV -S .gitlab/ci/ctest_configure.cmake"
+        - "$LAUNCHER ctest -VV -S .gitlab/ci/ctest_build.cmake"
+        - sccache --show-stats
+    interruptible: true
+
+build:fedora31-tidy:
+    <<:
+        - *fedora31_tidy
+    stage: build
+    only: *only_settings
+    tags:
+        - build
+        - docker
+        - linux
+
+    script:
+        - .gitlab/ci/sccache.sh
+        - sccache --start-server
+        - sccache --show-stats
+        - "$LAUNCHER ctest -VV -S .gitlab/ci/ctest_configure.cmake"
+        - "$LAUNCHER ctest -VV -S .gitlab/ci/ctest_build.cmake"
+        - sccache --show-stats
+    interruptible: true

+ 16 - 0
.gitlab/ci/cmake.sh

@@ -0,0 +1,16 @@
+#!/bin/sh
+
+set -e
+
+readonly version="3.17.2"
+readonly sha256sum="dc57f3cc448ca67fc8776b4ad4c22b087b9c6a8e459938b9622b8c7f4ef6b21e"
+readonly filename="cmake-$version-Linux-x86_64"
+readonly tarball="$filename.tar.gz"
+
+cd .gitlab
+
+echo "$sha256sum  $tarball" > cmake.sha256sum
+curl -OL "https://github.com/Kitware/CMake/releases/download/v$version/$tarball"
+sha256sum --check cmake.sha256sum
+tar xf "$tarball"
+mv "$filename" cmake

+ 3 - 0
.gitlab/ci/configure_common.cmake

@@ -0,0 +1,3 @@
+set(CTEST_USE_LAUNCHERS "ON" CACHE STRING "")
+
+include("${CMAKE_CURRENT_LIST_DIR}/configure_sccache.cmake")

+ 4 - 0
.gitlab/ci/configure_debian10_iwyu.cmake

@@ -0,0 +1,4 @@
+set(CMake_RUN_IWYU ON CACHE BOOL "")
+set(IWYU_COMMAND "/usr/bin/include-what-you-use-6.0" CACHE FILEPATH "")
+
+include("${CMAKE_CURRENT_LIST_DIR}/configure_common.cmake")

+ 3 - 0
.gitlab/ci/configure_fedora31_tidy.cmake

@@ -0,0 +1,3 @@
+set(CMake_RUN_CLANG_TIDY ON CACHE BOOL "")
+
+include("${CMAKE_CURRENT_LIST_DIR}/configure_common.cmake")

+ 2 - 0
.gitlab/ci/configure_sccache.cmake

@@ -0,0 +1,2 @@
+set(CMAKE_C_COMPILER_LAUNCHER "sccache" CACHE STRING "")
+set(CMAKE_CXX_COMPILER_LAUNCHER "sccache" CACHE STRING "")

+ 30 - 0
.gitlab/ci/ctest_build.cmake

@@ -0,0 +1,30 @@
+cmake_minimum_required(VERSION 3.8)
+
+include("${CMAKE_CURRENT_LIST_DIR}/gitlab_ci.cmake")
+
+# Read the files from the build directory.
+ctest_read_custom_files("${CTEST_BINARY_DIRECTORY}")
+
+# Pick up from where the configure left off.
+ctest_start(APPEND)
+
+if (CTEST_CMAKE_GENERATOR STREQUAL "Unix Makefiles")
+  include(ProcessorCount)
+  ProcessorCount(nproc)
+  set(CTEST_BUILD_FLAGS "-j${nproc}")
+endif ()
+
+ctest_build(
+  NUMBER_WARNINGS num_warnings
+  RETURN_VALUE build_result)
+ctest_submit(PARTS Build)
+
+if (build_result)
+  message(FATAL_ERROR
+    "Failed to build")
+endif ()
+
+if ("$ENV{CTEST_NO_WARNINGS_ALLOWED}" AND num_warnings GREATER 0)
+  message(FATAL_ERROR
+    "Found ${num_warnings} warnings (treating as fatal).")
+endif ()

+ 32 - 0
.gitlab/ci/ctest_configure.cmake

@@ -0,0 +1,32 @@
+cmake_minimum_required(VERSION 3.8)
+
+include("${CMAKE_CURRENT_LIST_DIR}/gitlab_ci.cmake")
+
+set(cmake_args
+  -C "${CMAKE_CURRENT_LIST_DIR}/configure_$ENV{CMAKE_CONFIGURATION}.cmake")
+
+# Create an entry in CDash.
+ctest_start(Experimental TRACK "${ctest_track}")
+
+# Gather update information.
+find_package(Git)
+set(CTEST_UPDATE_VERSION_ONLY ON)
+set(CTEST_UPDATE_COMMAND "${GIT_EXECUTABLE}")
+ctest_update()
+
+# Configure the project.
+ctest_configure(
+  OPTIONS "${cmake_args}"
+  RETURN_VALUE configure_result)
+
+# Read the files from the build directory.
+ctest_read_custom_files("${CTEST_BINARY_DIRECTORY}")
+
+# We can now submit because we've configured. This is a cmb-superbuild-ism.
+ctest_submit(PARTS Update)
+ctest_submit(PARTS Configure)
+
+if (configure_result)
+  message(FATAL_ERROR
+    "Failed to configure")
+endif ()

+ 6 - 0
.gitlab/ci/ctest_exclusions.cmake

@@ -0,0 +1,6 @@
+set(test_exclusions
+)
+string(REPLACE ";" "|" test_exclusions "${test_exclusions}")
+if (test_exclusions)
+  set(test_exclusions "(${test_exclusions})")
+endif ()

+ 24 - 0
.gitlab/ci/ctest_test.cmake

@@ -0,0 +1,24 @@
+cmake_minimum_required(VERSION 3.8)
+
+include("${CMAKE_CURRENT_LIST_DIR}/gitlab_ci.cmake")
+
+# Read the files from the build directory.
+ctest_read_custom_files("${CTEST_BINARY_DIRECTORY}")
+
+# Pick up from where the configure left off.
+ctest_start(APPEND)
+
+include(ProcessorCount)
+ProcessorCount(nproc)
+
+include("${CMAKE_CURRENT_LIST_DIR}/ctest_exclusions.cmake")
+ctest_test(
+  PARALLEL_LEVEL "${nproc}"
+  RETURN_VALUE test_result
+  EXCLUDE "${test_exclusions}")
+ctest_submit(PARTS Test)
+
+if (test_result)
+  message(FATAL_ERROR
+    "Failed to test")
+endif ()

+ 15 - 0
.gitlab/ci/docker/debian10/Dockerfile

@@ -0,0 +1,15 @@
+FROM debian:10 as iwyu-build
+MAINTAINER Ben Boeckel <[email protected]>
+
+COPY install_iwyu.sh /root/install_iwyu.sh
+RUN sh /root/install_iwyu.sh
+
+FROM debian:10
+MAINTAINER Ben Boeckel <[email protected]>
+
+COPY install_deps.sh /root/install_deps.sh
+RUN sh /root/install_deps.sh
+
+COPY --from=iwyu-build /root/iwyu.tar.gz /root/iwyu.tar.gz
+RUN tar -C / -xf /root/iwyu.tar.gz
+RUN ln -s /usr/lib/llvm-6.0/bin/include-what-you-use /usr/bin/include-what-you-use-6.0

+ 22 - 0
.gitlab/ci/docker/debian10/install_deps.sh

@@ -0,0 +1,22 @@
+#!/bin/sh
+
+set -e
+
+apt-get update
+
+# Install build requirements.
+apt-get install -y \
+    libssl-dev
+
+# Install development tools.
+apt-get install -y \
+    g++ \
+    curl \
+    git
+
+# Install iwyu runtime deps.
+apt-get install -y \
+    clang-6.0 \
+    libncurses6
+
+apt-get clean

+ 32 - 0
.gitlab/ci/docker/debian10/install_iwyu.sh

@@ -0,0 +1,32 @@
+#!/bin/sh
+
+set -e
+
+# Install development tools.
+apt-get update
+apt-get install -y \
+    clang-6.0 \
+    libclang-6.0-dev \
+    llvm-6.0-dev \
+    libz-dev \
+    g++ \
+    cmake \
+    ninja-build \
+    git
+
+cd /root
+git clone "https://github.com/include-what-you-use/include-what-you-use.git"
+cd include-what-you-use
+readonly llvm_version="$( clang-6.0 --version | head -n1 | cut -d' ' -f3 | cut -d. -f-2 )"
+git checkout "clang_$llvm_version"
+mkdir build
+cd build
+
+cmake -GNinja \
+    -DCMAKE_BUILD_TYPE=Release \
+    "-DCMAKE_INSTALL_PREFIX=/usr/lib/llvm-$llvm_version" \
+    "-DIWYU_LLVM_ROOT_PATH=/usr/lib/llvm-$llvm_version" \
+    ..
+ninja
+DESTDIR=/root/iwyu-destdir ninja install
+tar -C /root/iwyu-destdir -cf /root/iwyu.tar.gz .

+ 5 - 0
.gitlab/ci/docker/fedora31/Dockerfile

@@ -0,0 +1,5 @@
+FROM fedora:31
+MAINTAINER Ben Boeckel <[email protected]>
+
+COPY install_deps.sh /root/install_deps.sh
+RUN sh /root/install_deps.sh

+ 13 - 0
.gitlab/ci/docker/fedora31/install_deps.sh

@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# Install build requirements.
+dnf install -y \
+    openssl-devel
+
+# Install development tools.
+dnf install -y \
+    clang-tools-extra \
+    gcc-c++ \
+    git-core
+
+dnf clean all

+ 46 - 0
.gitlab/ci/gitlab_ci.cmake

@@ -0,0 +1,46 @@
+if (NOT DEFINED "ENV{GITLAB_CI}")
+  message(FATAL_ERROR
+    "This script assumes it is being run inside of GitLab-CI")
+endif ()
+
+# Set up the source and build paths.
+set(CTEST_SOURCE_DIRECTORY "$ENV{CI_PROJECT_DIR}")
+set(CTEST_BINARY_DIRECTORY "${CTEST_SOURCE_DIRECTORY}/build")
+
+if ("$ENV{CMAKE_CONFIGURATION}" STREQUAL "")
+  message(FATAL_ERROR
+    "The CMAKE_CONFIGURATION environment variable is required to know what "
+    "cache initialization file to use.")
+endif ()
+
+# Set the build metadata.
+set(CTEST_BUILD_NAME "$ENV{CI_PROJECT_NAME}-$ENV{CMAKE_CONFIGURATION}")
+set(CTEST_SITE "gitlab-ci")
+
+# Default to Release builds.
+if (NOT "$ENV{CMAKE_BUILD_TYPE}" STREQUAL "")
+  set(CTEST_BUILD_CONFIGURATION "$ENV{CMAKE_BUILD_TYPE}")
+endif ()
+if (NOT CTEST_BUILD_CONFIGURATION)
+  set(CTEST_BUILD_CONFIGURATION "Release")
+endif ()
+
+# Default to using Ninja.
+if (NOT "$ENV{CMAKE_GENERATOR}" STREQUAL "")
+  set(CTEST_CMAKE_GENERATOR "$ENV{CMAKE_GENERATOR}")
+endif ()
+if (NOT CTEST_CMAKE_GENERATOR)
+  set(CTEST_CMAKE_GENERATOR "Ninja")
+endif ()
+
+# Determine the track to submit to.
+set(ctest_track "Experimental")
+if (NOT "$ENV{CI_MERGE_REQUEST_ID}" STREQUAL "")
+  set(ctest_track "merge-requests")
+elseif ("$ENV{CI_PROJECT_PATH}" STREQUAL "cmb/smtk")
+  if ("$ENV{CI_COMMIT_REF_NAME}" STREQUAL "master")
+    set(ctest_track "master")
+  elseif ("$ENV{CI_COMMIT_REF_NAME}" STREQUAL "release")
+    set(ctest_track "release")
+  endif ()
+endif ()

+ 15 - 0
.gitlab/ci/ninja.sh

@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+
+readonly version="1.10.0"
+readonly sha256sum="6566836ddf3d72ca06685b34814e0c6fa0f0943542d651d0dab3150f10307c82"
+readonly filename="ninja-linux"
+readonly tarball="$filename.zip"
+
+cd .gitlab
+
+echo "$sha256sum  $tarball" > ninja.sha256sum
+curl -OL "https://github.com/ninja-build/ninja/releases/download/v$version/$tarball"
+sha256sum --check ninja.sha256sum
+./cmake/bin/cmake -E tar xf "$tarball"

+ 16 - 0
.gitlab/ci/sccache.sh

@@ -0,0 +1,16 @@
+#!/bin/sh
+
+set -e
+
+readonly version="0.2.12"
+readonly sha256sum="26fd04c1273952cc2a0f359a71c8a1857137f0ee3634058b3f4a63b69fc8eb7f"
+readonly filename="sccache-$version-x86_64-unknown-linux-musl"
+readonly tarball="$filename.tar.gz"
+
+cd .gitlab
+
+echo "$sha256sum  $tarball" > sccache.sha256sum
+curl -OL "https://github.com/mozilla/sccache/releases/download/$version/$tarball"
+sha256sum --check sccache.sha256sum
+tar xf "$tarball"
+mv "$filename/sccache" .

+ 1 - 1
Source/CPack/IFW/cmCPackIFWCommon.cxx

@@ -2,7 +2,7 @@
    file Copyright.txt or https://cmake.org/licensing for details.  */
 #include "cmCPackIFWCommon.h"
 
-#include <cstddef>
+#include <cstddef> // IWYU pragma: keep
 #include <sstream>
 #include <utility>
 #include <vector>

+ 1 - 1
Source/CTest/cmCTestMultiProcessHandler.cxx

@@ -6,7 +6,7 @@
 #include <cassert>
 #include <chrono>
 #include <cmath>
-#include <cstddef>
+#include <cstddef> // IWYU pragma: keep
 #include <cstdlib>
 #include <cstring>
 #include <iomanip>

+ 1 - 1
Source/CTest/cmCTestRunTest.cxx

@@ -3,7 +3,7 @@
 #include "cmCTestRunTest.h"
 
 #include <chrono>
-#include <cstddef>
+#include <cstddef> // IWYU pragma: keep
 #include <cstdint>
 #include <cstdio>
 #include <cstring>

+ 1 - 1
Source/CTest/cmCTestTestHandler.cxx

@@ -5,7 +5,7 @@
 #include <algorithm>
 #include <chrono>
 #include <cmath>
-#include <cstddef>
+#include <cstddef> // IWYU pragma: keep
 #include <cstdio>
 #include <cstdlib>
 #include <cstring>

+ 1 - 1
Source/bindexplib.cxx

@@ -64,7 +64,7 @@
  */
 #include "bindexplib.h"
 
-#include <cstddef>
+#include <cstddef> // IWYU pragma: keep
 #include <sstream>
 #include <vector>
 

+ 0 - 1
Source/cmArgumentParser.cxx

@@ -3,7 +3,6 @@
 #include "cmArgumentParser.h"
 
 #include <algorithm>
-#include <type_traits>
 
 namespace ArgumentParser {
 

+ 1 - 1
Source/cmForEachCommand.cxx

@@ -4,7 +4,7 @@
 
 #include <algorithm>
 #include <cassert>
-#include <cstddef>
+#include <cstddef> // IWYU pragma: keep
 // NOTE The declaration of `std::abs` has moved to `cmath` since C++17
 // See https://en.cppreference.com/w/cpp/numeric/math/abs
 // ALERT But IWYU used to lint `#include`s do not "understand"

+ 2 - 0
Source/cmFunctionBlocker.cxx

@@ -3,7 +3,9 @@
 #include "cmFunctionBlocker.h"
 
 #include <cassert>
+#include <memory> // IWYU pragma: keep
 #include <sstream>
+#include <string> // IWYU pragma: keep
 #include <utility>
 
 #include "cmExecutionStatus.h"

+ 1 - 1
Source/cmGhsMultiTargetGenerator.cxx

@@ -14,7 +14,7 @@
 #include "cmGeneratedFileStream.h"
 #include "cmGeneratorTarget.h"
 #include "cmGlobalGhsMultiGenerator.h"
-#include "cmLinkLineComputer.h"
+#include "cmLinkLineComputer.h" // IWYU pragma: keep
 #include "cmLocalGenerator.h"
 #include "cmLocalGhsMultiGenerator.h"
 #include "cmMakefile.h"

+ 1 - 1
Source/cmMakefileTargetGenerator.cxx

@@ -18,7 +18,7 @@
 #include "cmGeneratorExpression.h"
 #include "cmGeneratorTarget.h"
 #include "cmGlobalUnixMakefileGenerator3.h"
-#include "cmLinkLineComputer.h"
+#include "cmLinkLineComputer.h" // IWYU pragma: keep
 #include "cmLocalCommonGenerator.h"
 #include "cmLocalUnixMakefileGenerator3.h"
 #include "cmMakefile.h"

+ 1 - 1
Source/cmStringAlgorithms.cxx

@@ -4,7 +4,7 @@
 
 #include <algorithm>
 #include <cerrno>
-#include <cstddef>
+#include <cstddef> // IWYU pragma: keep
 #include <cstdio>
 #include <cstdlib>
 

+ 1 - 1
Source/cmUVProcessChain.h

@@ -4,7 +4,7 @@
 #define cmUVProcessChain_h
 
 #include <array>
-#include <cstddef>
+#include <cstddef> // IWYU pragma: keep
 #include <cstdint>
 #include <iosfwd>
 #include <memory>

+ 1 - 1
Source/cmXMLWriter.h

@@ -6,7 +6,7 @@
 #include "cmConfigure.h" // IWYU pragma: keep
 
 #include <chrono>
-#include <cstddef>
+#include <cstddef> // IWYU pragma: keep
 #include <ctime>
 #include <ostream>
 #include <stack>

+ 1 - 1
Tests/CMakeLib/testCTestBinPacker.cxx

@@ -1,4 +1,4 @@
-#include <cstddef>
+#include <cstddef> // IWYU pragma: keep
 #include <iostream>
 #include <map>
 #include <string>

+ 1 - 1
Tests/CMakeLib/testGccDepfileReader.cxx

@@ -1,4 +1,4 @@
-#include <cstddef>
+#include <cstddef> // IWYU pragma: keep
 #include <iostream>
 #include <memory>
 #include <string>

+ 1 - 1
Tests/CMakeLib/testString.cxx

@@ -1,7 +1,7 @@
 /* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
    file Copyright.txt or https://cmake.org/licensing for details.  */
 
-#include <cstddef>
+#include <cstddef> // IWYU pragma: keep
 #include <cstring>
 #include <iostream>
 #include <iterator>

+ 1 - 1
Tests/RunCMake/CTestResourceAllocation/ctresalloc.cxx

@@ -1,6 +1,6 @@
 #include <cassert>
 #include <chrono>
-#include <cstddef>
+#include <cstddef> // IWYU pragma: keep
 #include <cstdlib>
 #include <iostream>
 #include <map>

+ 4 - 0
Utilities/IWYU/mapping.imp

@@ -27,6 +27,7 @@
   { include: [ "<bits/std_abs.h>", private, "<stdlib.h>", public ] },
   { include: [ "<bits/stdint-intn.h>", private, "<stdint.h>", public ] },
   { include: [ "<bits/stdint-uintn.h>", private, "<stdint.h>", public ] },
+  { include: [ "<bits/string_view.tcc>", private, "<string_view>", public ] },
   { include: [ "<bits/time.h>", private, "<time.h>", public ] },
   { include: [ "<bits/types/clock_t.h>", private, "<time.h>", public ] },
   { include: [ "<bits/types/mbstate_t.h>", private, "<wchar.h>", public ] },
@@ -77,6 +78,7 @@
   # Use '-Xiwyu -v7' to see the fully qualified names that need this.
   # TODO: Can this be simplified with an @-expression?
   #{ symbol: [ "@std::__decay_and_strip<.*>::__type", private, "\"cmConfigure.h\"", public ] },
+  { symbol: [ "std::__decay_and_strip<bool>::__type", private, "\"cmConfigure.h\"", public ] },
   { symbol: [ "std::__decay_and_strip<char const (&)[1]>::__type", private, "\"cmConfigure.h\"", public ] },
   { symbol: [ "std::__decay_and_strip<cmCommand *&>::__type", private, "\"cmConfigure.h\"", public ] },
   { symbol: [ "std::__decay_and_strip<cmGeneratorTarget *&>::__type", private, "\"cmConfigure.h\"", public ] },
@@ -86,7 +88,9 @@
   { symbol: [ "std::__decay_and_strip<std::basic_string<char> &>::__type", private, "\"cmConfigure.h\"", public ] },
   { symbol: [ "std::__decay_and_strip<const std::basic_string<char> &>::__type", private, "\"cmConfigure.h\"", public ] },
   { symbol: [ "std::__decay_and_strip<cmFindPackageCommand::PathLabel &>::__type", private, "\"cmConfigure.h\"", public ] },
+  { symbol: [ "std::__decay_and_strip<cmGlobalNinjaGenerator::TargetAlias &>::__type", private, "\"cmConfigure.h\"", public ] },
   { symbol: [ "std::__decay_and_strip<__gnu_cxx::__normal_iterator<const cmCTestTestHandler::cmCTestTestProperties *, std::vector<cmCTestTestHandler::cmCTestTestProperties, std::allocator<cmCTestTestHandler::cmCTestTestProperties> > > &>::__type", private, "\"cmConfigure.h\"", public ] },
+  { symbol: [ "std::__decay_and_strip<const __gnu_cxx::__normal_iterator<std::pair<cm::string_view, std::function<void (ArgumentParser::Instance &, void *)> > *, std::vector<std::pair<cm::string_view, std::function<void (ArgumentParser::Instance &, void *)> >, std::allocator<std::pair<cm::string_view, std::function<void (ArgumentParser::Instance &, void *)> > > > > &>::__type", private, "\"cmConfigure.h\"", public ] },
   { symbol: [ "std::__success_type<std::chrono::duration<double, std::ratio<1, 1> > >::type", private, "\"cmConfigure.h\"", public ] },
   { symbol: [ "std::__success_type<std::chrono::duration<long, std::ratio<1, 1000000000> > >::type", private, "\"cmConfigure.h\"", public ] },
   { symbol: [ "std::enable_if<true, std::chrono::duration<long, std::ratio<1, 1> > >::type", private, "\"cmConfigure.h\"", public ] },