diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4f8a022..ca18091 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,7 +1,7 @@
 # Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
 # file LICENSE.rst or https://cmake.org/licensing for details.
 
-cmake_minimum_required(VERSION 3.13...4.2 FATAL_ERROR)
+cmake_minimum_required(VERSION 3.13...4.3 FATAL_ERROR)
 
 if(CMake_TEST_HOST_CMAKE)
   get_filename_component(CMake_TEST_EXTERNAL_CMAKE "${CMAKE_COMMAND}" DIRECTORY)
diff --git a/Help/command/file.rst b/Help/command/file.rst
index 42b0871..094262e 100644
--- a/Help/command/file.rst
+++ b/Help/command/file.rst
@@ -764,10 +764,16 @@
 
     ``STATUS <variable>``
       Store the resulting status of the operation in a variable.
-      The status is a ``;`` separated list of length 2.
+      The status is a
+      :ref:`semicolon-separated list <CMake Language Lists>` 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.
+      A ``0`` numeric error means no error in the operation (``CURLE_OK``).
+
+      The return value and description are produced directly from libcurl.
+      See the `libcurl documentation`_ on error codes for more information.
+
+    .. _`libcurl documentation`: https://curl.se/libcurl/c/libcurl-errors.html
 
     ``TIMEOUT <seconds>``
       Terminate the operation after a given total time has elapsed.
@@ -1080,6 +1086,7 @@
     [DESTINATION <dir>]
     [ENCODING <encoding>]
     [PATTERNS <pattern>...]
+    [PATTERNS_EXCLUDE <pattern>...]
     [LIST_ONLY]
     [VERBOSE]
     [TOUCH])
@@ -1137,6 +1144,18 @@
     patterns.  Wildcards are supported.  If the ``PATTERNS`` option is
     not given, the entire archive will be listed or extracted.
 
+  ``PATTERNS_EXCLUDE <pattern>...``
+    .. versionadded:: 4.5
+
+    Do not extract or list files and directories that match one of the given
+    patterns.  Wildcards are supported.  This option may be combined with
+    ``PATTERNS``; an entry that matches both an inclusion pattern and an
+    exclusion pattern is excluded.
+
+    Unlike ``PATTERNS``, exclusion patterns are not anchored to the start of
+    an entry's path: a pattern matches if it matches any portion of the path.
+    This is consistent with the ``--exclude`` option of command-line ``tar``.
+
   ``LIST_ONLY``
     List the files in the archive rather than extract them.
 
diff --git a/Help/manual/cmake-policies.7.rst b/Help/manual/cmake-policies.7.rst
index 9a4f7c0..a535116 100644
--- a/Help/manual/cmake-policies.7.rst
+++ b/Help/manual/cmake-policies.7.rst
@@ -36,10 +36,10 @@
 
 .. code-block:: cmake
 
-  cmake_minimum_required(VERSION 3.10...4.3)
+  cmake_minimum_required(VERSION 3.10...4.4)
 
 This uses the ``<min>...<policy_max>`` syntax to enable the ``NEW`` behaviors
-of policies introduced in CMake 4.3 and earlier while only requiring a
+of policies introduced in CMake 4.4 and earlier while only requiring a
 minimum version of CMake 3.10.  The project is expected to work with
 both the ``OLD`` and ``NEW`` behaviors of policies introduced between
 those versions.
diff --git a/Help/release/dev/0-sample-topic.rst b/Help/release/dev/0-sample-topic.rst
new file mode 100644
index 0000000..e4cc01e
--- /dev/null
+++ b/Help/release/dev/0-sample-topic.rst
@@ -0,0 +1,7 @@
+0-sample-topic
+--------------
+
+* This is a sample release note for the change in a topic.
+  Developers should add similar notes for each topic branch
+  making a noteworthy change.  Each document should be named
+  and titled to match the topic name to avoid merge conflicts.
diff --git a/Help/release/dev/file-ARCHIVE_EXTRACT-patterns-exclude.rst b/Help/release/dev/file-ARCHIVE_EXTRACT-patterns-exclude.rst
new file mode 100644
index 0000000..c661ceb
--- /dev/null
+++ b/Help/release/dev/file-ARCHIVE_EXTRACT-patterns-exclude.rst
@@ -0,0 +1,6 @@
+file-ARCHIVE_EXTRACT-patterns-exclude
+-------------------------------------
+
+* The :command:`file(ARCHIVE_EXTRACT)` command gained a ``PATTERNS_EXCLUDE``
+  option to omit archive entries matching the given patterns from being
+  extracted or listed.
diff --git a/Help/release/index.rst b/Help/release/index.rst
index 462babd..c422c77 100644
--- a/Help/release/index.rst
+++ b/Help/release/index.rst
@@ -7,6 +7,8 @@
   This file should include the adjacent "dev.txt" file
   in development versions but not in release versions.
 
+.. include:: dev.txt
+
 Releases
 ========
 
diff --git a/Modules/UseJava/javaTargets.cmake.in b/Modules/UseJava/javaTargets.cmake.in
index 157a60e..b7e6107 100644
--- a/Modules/UseJava/javaTargets.cmake.in
+++ b/Modules/UseJava/javaTargets.cmake.in
@@ -1,5 +1,5 @@
 cmake_policy(PUSH)
-cmake_policy(VERSION 2.8.12...4.2)
+cmake_policy(VERSION 2.8.12...4.3)
 
 #----------------------------------------------------------------
 # Generated CMake Java target import file.
diff --git a/Modules/UseSWIG.cmake b/Modules/UseSWIG.cmake
index 3d901dd..1666f35 100644
--- a/Modules/UseSWIG.cmake
+++ b/Modules/UseSWIG.cmake
@@ -589,39 +589,23 @@
 
   set (swig_source_file_flags ${CMAKE_SWIG_FLAGS})
   # handle various swig compile flags properties
-  get_source_file_property (include_directories "${infile}" INCLUDE_DIRECTORIES)
-  if (include_directories)
-    list (APPEND swig_source_file_flags "$<$<BOOL:${include_directories}>:-I$<JOIN:${include_directories},$<SEMICOLON>-I>>")
-  endif()
-  set (property "$<TARGET_PROPERTY:${target_name},SWIG_INCLUDE_DIRECTORIES>")
-  list (APPEND swig_source_file_flags "$<$<BOOL:${property}>:-I$<JOIN:$<TARGET_GENEX_EVAL:${target_name},${property}>,$<SEMICOLON>-I>>")
-  set (property "$<REMOVE_DUPLICATES:$<TARGET_PROPERTY:${target_name},INCLUDE_DIRECTORIES>>")
-  get_source_file_property(use_target_include_dirs "${infile}" USE_TARGET_INCLUDE_DIRECTORIES)
-  if (use_target_include_dirs)
-    list (APPEND swig_source_file_flags "$<$<BOOL:${property}>:-I$<JOIN:${property},$<SEMICOLON>-I>>")
-  elseif(use_target_include_dirs STREQUAL "NOTFOUND")
-    # not defined at source level, rely on target level
-    list (APPEND swig_source_file_flags "$<$<AND:$<BOOL:$<TARGET_PROPERTY:${target_name},SWIG_USE_TARGET_INCLUDE_DIRECTORIES>>,$<BOOL:${property}>>:-I$<JOIN:${property},$<SEMICOLON>-I>>")
-  endif()
+  ### include directories
+  list (APPEND swig_source_file_flags "$<LIST:TRANSFORM,$<LIST:REMOVE_DUPLICATES,$<SOURCE_PROPERTY:${infile},TARGET_DIRECTORY:${target_name},INCLUDE_DIRECTORIES>>,PREPEND,-I>")
+  list (APPEND swig_source_file_flags "$<LIST:TRANSFORM,$<LIST:REMOVE_DUPLICATES,$<TARGET_GENEX_EVAL:${target_name},$<TARGET_PROPERTY:${target_name},SWIG_INCLUDE_DIRECTORIES>>>,PREPEND,-I>")
+  # use target INCLUDE_DIRECTORIES if source property USE_TARGET_INCLUDE_DIRECTORIES is "ON" or,
+  # if undefined, if target property SWIG_USE_TARGET_INCLUDE_DIRECTORIES is "ON"
+  list (APPEND swig_source_file_flags "$<LIST:TRANSFORM,$<LIST:REMOVE_DUPLICATES,$<IF:$<BOOL:$<SOURCE_PROPERTY:${infile},TARGET_DIRECTORY:${target_name},USE_TARGET_INCLUDE_DIRECTORIES>>,$<TARGET_PROPERTY:${target_name},INCLUDE_DIRECTORIES>,$<$<AND:$<EQUAL:$<STRING:LENGTH,$<SOURCE_PROPERTY:${infile},TARGET_DIRECTORY:${target_name},USE_TARGET_INCLUDE_DIRECTORIES>>,0>,$<BOOL:$<TARGET_PROPERTY:${target_name},SWIG_USE_TARGET_INCLUDE_DIRECTORIES>>>:$<TARGET_PROPERTY:${target_name},INCLUDE_DIRECTORIES>>>>,PREPEND,-I>")
 
-  set (property "$<TARGET_PROPERTY:${target_name},SWIG_COMPILE_DEFINITIONS>")
-  list (APPEND swig_source_file_flags "$<$<BOOL:${property}>:-D$<JOIN:$<TARGET_GENEX_EVAL:${target_name},${property}>,$<SEMICOLON>-D>>")
-  get_source_file_property (compile_definitions "${infile}" COMPILE_DEFINITIONS)
-  if (compile_definitions)
-    list (APPEND swig_source_file_flags "$<$<BOOL:${compile_definitions}>:-D$<JOIN:${compile_definitions},$<SEMICOLON>-D>>")
-  endif()
+  ### compile definitions
+  list (APPEND swig_source_file_flags "$<LIST:TRANSFORM,$<LIST:REMOVE_DUPLICATES,$<TARGET_GENEX_EVAL:${target_name},$<TARGET_PROPERTY:${target_name},SWIG_COMPILE_DEFINITIONS>>>,PREPEND,-D>")
+  list (APPEND swig_source_file_flags "$<LIST:TRANSFORM,$<LIST:REMOVE_DUPLICATES,$<SOURCE_PROPERTY:${infile},TARGET_DIRECTORY:${target_name},COMPILE_DEFINITIONS>>,PREPEND,-D>")
 
+  ### compile options
   list (APPEND swig_source_file_flags "$<TARGET_GENEX_EVAL:${target_name},$<TARGET_PROPERTY:${target_name},SWIG_COMPILE_OPTIONS>>")
-  get_source_file_property (compile_options "${infile}" COMPILE_OPTIONS)
-  if (compile_options)
-    list (APPEND swig_source_file_flags ${compile_options})
-  endif()
+  list (APPEND swig_source_file_flags "$<SOURCE_PROPERTY:${infile},TARGET_DIRECTORY:${target_name},COMPILE_OPTIONS>")
 
   # legacy support
-  get_source_file_property (swig_flags "${infile}" SWIG_FLAGS)
-  if (swig_flags)
-    list (APPEND swig_source_file_flags ${swig_flags})
-  endif()
+  list (APPEND swig_source_file_flags "$<SOURCE_PROPERTY:${infile},TARGET_DIRECTORY:${target_name},SWIG_FLAGS>")
 
   get_filename_component(swig_source_file_fullname "${infile}" ABSOLUTE)
 
@@ -651,21 +635,16 @@
   list (REMOVE_DUPLICATES cmake_include_directories)
   set (swig_include_dirs)
   if (cmake_include_directories)
-    set (swig_include_dirs "$<$<BOOL:${cmake_include_directories}>:-I$<JOIN:${cmake_include_directories},$<SEMICOLON>-I>>")
+    set (swig_include_dirs "$<LIST:TRANSFORM,${cmake_include_directories},PREPEND,-I>")
   endif()
 
   set(swig_special_flags)
   # default is c, so add c++ flag if it is c++
-  if(swig_source_file_cplusplus)
-    list (APPEND swig_special_flags "-c++")
-  endif()
+  list (APPEND swig_special_flags "$<$<BOOL:$<SOURCE_PROPERTY:${infile},TARGET_DIRECTORY:${target_name},CPLUSPLUS>>:-c++>")
 
   cmake_policy(GET CMP0086 module_name_policy)
   if (module_name_policy STREQUAL "NEW")
-    get_source_file_property(module_name "${infile}" SWIG_MODULE_NAME)
-    if (module_name)
-      list (APPEND swig_special_flags "-module" "${module_name}")
-    endif()
+    list (APPEND swig_special_flags "$<$<BOOL:$<SOURCE_PROPERTY:${infile},TARGET_DIRECTORY:${target_name},SWIG_MODULE_NAME>>:-module$<SEMICOLON>$<SOURCE_PROPERTY:${infile},TARGET_DIRECTORY:${target_name},SWIG_MODULE_NAME>>")
   else()
     if (NOT module_name_policy)
       cmake_policy(ISSUE_WARNING CMP0086)
@@ -692,10 +671,7 @@
 
   # dependencies
   set (swig_dependencies DEPENDS ${SWIG_MODULE_${name}_EXTRA_DEPS} $<TARGET_PROPERTY:${target_name},SWIG_DEPENDS>)
-  get_source_file_property(file_depends "${infile}" DEPENDS)
-  if (file_depends)
-    list (APPEND swig_dependencies ${file_depends})
-  endif()
+  list (APPEND swig_dependencies "$<SOURCE_PROPERTY:${infile},TARGET_DIRECTORY:${target_name},DEPENDS>")
 
   if (UseSWIG_MODULE_VERSION VERSION_GREATER 1)
     # as part of custom command, start by removing old generated files
@@ -761,14 +737,17 @@
     PROPERTIES GENERATED 1)
 
   ## add all properties for generated file to various properties
-  get_property (include_directories SOURCE "${infile}" PROPERTY GENERATED_INCLUDE_DIRECTORIES)
-  set_property (SOURCE "${swig_generated_file_fullname}" PROPERTY INCLUDE_DIRECTORIES ${include_directories} $<TARGET_GENEX_EVAL:${target_name},$<TARGET_PROPERTY:${target_name},SWIG_GENERATED_INCLUDE_DIRECTORIES>>)
+  set_property (SOURCE "${swig_generated_file_fullname}" PROPERTY INCLUDE_DIRECTORIES
+        "$<TARGET_GENEX_EVAL:${target_name},$<SOURCE_PROPERTY:${infile},TARGET_DIRECTORY:${target_name},GENERATED_INCLUDE_DIRECTORIES>>"
+        "$<TARGET_GENEX_EVAL:${target_name},$<TARGET_PROPERTY:${target_name},SWIG_GENERATED_INCLUDE_DIRECTORIES>>")
 
-  get_property (compile_definitions SOURCE "${infile}" PROPERTY GENERATED_COMPILE_DEFINITIONS)
-  set_property (SOURCE "${swig_generated_file_fullname}" PROPERTY COMPILE_DEFINITIONS $<TARGET_GENEX_EVAL:${target_name},$<TARGET_PROPERTY:${target_name},SWIG_GENERATED_COMPILE_DEFINITIONS>> ${compile_definitions})
+  set_property (SOURCE "${swig_generated_file_fullname}" PROPERTY COMPILE_DEFINITIONS
+        "$<TARGET_GENEX_EVAL:${target_name},$<TARGET_PROPERTY:${target_name},SWIG_GENERATED_COMPILE_DEFINITIONS>>"
+        "$<TARGET_GENEX_EVAL:${target_name},$<SOURCE_PROPERTY:${infile},TARGET_DIRECTORY:${target_name},GENERATED_COMPILE_DEFINITIONS>>")
 
-  get_property (compile_options SOURCE "${infile}" PROPERTY GENERATED_COMPILE_OPTIONS)
-  set_property (SOURCE "${swig_generated_file_fullname}" PROPERTY COMPILE_OPTIONS $<TARGET_GENEX_EVAL:${target_name},$<TARGET_PROPERTY:${target_name},SWIG_GENERATED_COMPILE_OPTIONS>> ${compile_options})
+  set_property (SOURCE "${swig_generated_file_fullname}" PROPERTY COMPILE_OPTIONS
+        "$<TARGET_GENEX_EVAL:${target_name},$<TARGET_PROPERTY:${target_name},SWIG_GENERATED_COMPILE_OPTIONS>>"
+        "$<TARGET_GENEX_EVAL:${target_name},$<SOURCE_PROPERTY:${infile},TARGET_DIRECTORY:${target_name},GENERATED_COMPILE_OPTIONS>>")
 
   if (SWIG_MODULE_${name}_SWIG_LANGUAGE_FLAG MATCHES "php")
     set_property (SOURCE "${swig_generated_file_fullname}" APPEND PROPERTY INCLUDE_DIRECTORIES "${outdir}")
diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake
index 8d54fc9..252ae61 100644
--- a/Source/CMakeVersion.cmake
+++ b/Source/CMakeVersion.cmake
@@ -1,8 +1,8 @@
 # CMake version number components.
 set(CMake_VERSION_MAJOR 4)
 set(CMake_VERSION_MINOR 4)
-set(CMake_VERSION_PATCH 0)
-set(CMake_VERSION_RC 1)
+set(CMake_VERSION_PATCH 20260616)
+#set(CMake_VERSION_RC 0)
 set(CMake_VERSION_IS_DIRTY 0)
 
 # Start with the full version number used in tags.  It has no dev info.
diff --git a/Source/Checks/Curses/CMakeLists.txt b/Source/Checks/Curses/CMakeLists.txt
index 2854172..f1f9319 100644
--- a/Source/Checks/Curses/CMakeLists.txt
+++ b/Source/Checks/Curses/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.13...4.2 FATAL_ERROR)
+cmake_minimum_required(VERSION 3.13...4.3 FATAL_ERROR)
 project(CheckCurses C)
 
 set(CURSES_NEED_NCURSES TRUE)
diff --git a/Source/cmBuildSbomBuilder.cxx b/Source/cmBuildSbomBuilder.cxx
index fbec0e1..24dbfa1 100644
--- a/Source/cmBuildSbomBuilder.cxx
+++ b/Source/cmBuildSbomBuilder.cxx
@@ -17,12 +17,13 @@
 {
 }
 
-bool cmBuildSbomBuilder::Generate(std::ostream& os)
+bool cmBuildSbomBuilder::Generate(std::ostream& os, std::string const& config)
 {
   if (!this->LocalGenerator) {
     return false;
   }
-  return this->GenerateForTargets(os, cmGeneratorExpression::BuildInterface);
+  return this->GenerateForTargets(os, config,
+                                  cmGeneratorExpression::BuildInterface);
 }
 
 cmExportFileGenerator::ExportInfo cmBuildSbomBuilder::FindExportInfoFor(
diff --git a/Source/cmBuildSbomBuilder.h b/Source/cmBuildSbomBuilder.h
index 6cca846..c9cf430 100644
--- a/Source/cmBuildSbomBuilder.h
+++ b/Source/cmBuildSbomBuilder.h
@@ -5,6 +5,7 @@
 #include "cmConfigure.h" // IWYU pragma: keep
 
 #include <iosfwd>
+#include <string>
 #include <vector>
 
 #include "cmExportFileGenerator.h"
@@ -23,7 +24,7 @@
                      std::vector<cmExportSet*> exportSets,
                      cmLocalGenerator* lg = nullptr);
 
-  bool Generate(std::ostream& os) override;
+  bool Generate(std::ostream& os, std::string const& config) override;
 
 protected:
   cmExportFileGenerator::ExportInfo FindExportInfoFor(
diff --git a/Source/cmBuildSbomGenerator.cxx b/Source/cmBuildSbomGenerator.cxx
index d77e583..1155604 100644
--- a/Source/cmBuildSbomGenerator.cxx
+++ b/Source/cmBuildSbomGenerator.cxx
@@ -3,14 +3,16 @@
 #include "cmBuildSbomGenerator.h"
 
 #include "cmGeneratedFileStream.h"
+#include "cmStringAlgorithms.h"
 
 void cmBuildSbomGenerator::Compute(cmLocalGenerator* lg)
 {
   this->Builder->Compute(lg);
 }
 
-bool cmBuildSbomGenerator::GenerateForBuild()
+bool cmBuildSbomGenerator::GenerateForBuild(std::string const& config)
 {
-  cmGeneratedFileStream os(this->OutputFile);
-  return this->Builder->Generate(os);
+  cmGeneratedFileStream os(
+    cmStrCat(this->OutputFile, "-", config, ".spdx.json"));
+  return this->Builder->Generate(os, config);
 }
diff --git a/Source/cmBuildSbomGenerator.h b/Source/cmBuildSbomGenerator.h
index 5c06835..9beaedd 100644
--- a/Source/cmBuildSbomGenerator.h
+++ b/Source/cmBuildSbomGenerator.h
@@ -2,6 +2,7 @@
    file LICENSE.rst or https://cmake.org/licensing for details.  */
 #pragma once
 
+#include <iosfwd>
 #include <string>
 #include <utility>
 #include <vector>
@@ -10,7 +11,6 @@
 
 #include "cmBuildSbomBuilder.h"
 #include "cmSbomArguments.h"
-
 class cmExportSet;
 class cmGeneratorTarget;
 class cmLocalGenerator;
@@ -45,13 +45,19 @@
   {
     return this->Builder->CoversTarget(target);
   }
+
+  bool GenerateForBuild(std::ostream& os, std::string const& config)
+  {
+    return this->Builder->Generate(os, config);
+  }
+
   std::string const& GetPackageName() const
   {
     return this->Builder->GetPackageName();
   }
 
   /** Open the output file and write the SBOM document to it. */
-  bool GenerateForBuild();
+  bool GenerateForBuild(std::string const& config);
 
 private:
   std::string OutputFile;
diff --git a/Source/cmExportCMakeConfigGenerator.cxx b/Source/cmExportCMakeConfigGenerator.cxx
index 353d38f..ef80d1c 100644
--- a/Source/cmExportCMakeConfigGenerator.cxx
+++ b/Source/cmExportCMakeConfigGenerator.cxx
@@ -176,7 +176,7 @@
   // Isolate the file policy level.
   // Support CMake versions as far back as the
   // RequiredCMakeVersion{Major,Minor,Patch}, but also support using NEW
-  // policy settings for up to CMake 4.2 (this upper limit may be reviewed
+  // policy settings for up to CMake 4.3 (this upper limit may be reviewed
   // and increased from time to time). This reduces the opportunity for CMake
   // warnings when an older export file is later used with newer CMake
   // versions.
@@ -185,7 +185,7 @@
         "cmake_policy(VERSION "
      << this->RequiredCMakeVersionMajor << '.'
      << this->RequiredCMakeVersionMinor << '.'
-     << this->RequiredCMakeVersionPatch << "...4.2)\n";
+     << this->RequiredCMakeVersionPatch << "...4.3)\n";
   /* clang-format on */
 }
 
diff --git a/Source/cmExportCommand.cxx b/Source/cmExportCommand.cxx
index 2f6434a..98208d7 100644
--- a/Source/cmExportCommand.cxx
+++ b/Source/cmExportCommand.cxx
@@ -459,7 +459,7 @@
 
   std::string const dir =
     arguments.GetDefaultDestination(mf.GetCurrentBinaryDirectory());
-  std::string const fpath = cmStrCat(dir, '/', arguments.GetPackageFileName());
+  std::string const fpath = cmStrCat(dir, '/', arguments.GetPackageName());
 
   if (gg->IsBuildSbomFile(fpath)) {
     status.SetError(cmStrCat("SBOM command already specified for the file "_s,
@@ -479,7 +479,6 @@
   }
 
   auto builder = cm::make_unique<cmBuildSbomGenerator>(arguments, sets, fpath);
-
   cmBuildSbomGenerator* rawPtr = builder.get();
   mf.AddBuildSbomGenerator(std::move(builder));
   gg->AddBuildSbomGenerator(rawPtr);
diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx
index 366314c..222acd7 100644
--- a/Source/cmFileCommand.cxx
+++ b/Source/cmFileCommand.cxx
@@ -3888,17 +3888,20 @@
     bool ListOnly = false;
     std::string Destination;
     ArgumentParser::MaybeEmpty<std::vector<std::string>> Patterns;
+    ArgumentParser::MaybeEmpty<std::vector<std::string>> PatternsExclude;
     bool Touch = false;
   };
 
-  static auto const parser = cmArgumentParser<Arguments>{}
-                               .Bind("INPUT"_s, &Arguments::Input)
-                               .Bind("ENCODING"_s, &Arguments::Encoding)
-                               .Bind("VERBOSE"_s, &Arguments::Verbose)
-                               .Bind("LIST_ONLY"_s, &Arguments::ListOnly)
-                               .Bind("DESTINATION"_s, &Arguments::Destination)
-                               .Bind("PATTERNS"_s, &Arguments::Patterns)
-                               .Bind("TOUCH"_s, &Arguments::Touch);
+  static auto const parser =
+    cmArgumentParser<Arguments>{}
+      .Bind("INPUT"_s, &Arguments::Input)
+      .Bind("ENCODING"_s, &Arguments::Encoding)
+      .Bind("VERBOSE"_s, &Arguments::Verbose)
+      .Bind("LIST_ONLY"_s, &Arguments::ListOnly)
+      .Bind("DESTINATION"_s, &Arguments::Destination)
+      .Bind("PATTERNS"_s, &Arguments::Patterns)
+      .Bind("PATTERNS_EXCLUDE"_s, &Arguments::PatternsExclude)
+      .Bind("TOUCH"_s, &Arguments::Touch);
 
   std::vector<std::string> unrecognizedArguments;
   auto parsedArgs =
@@ -3928,6 +3931,7 @@
 
   if (parsedArgs.ListOnly) {
     if (!cmSystemTools::ListTar(inFile, parsedArgs.Patterns,
+                                parsedArgs.PatternsExclude,
                                 parsedArgs.Encoding, parsedArgs.Verbose)) {
       status.SetError(cmStrCat("failed to list: ", inFile));
       cmSystemTools::SetFatalErrorOccurred();
@@ -3962,7 +3966,7 @@
     }
 
     if (!cmSystemTools::ExtractTar(
-          inFile, parsedArgs.Patterns,
+          inFile, parsedArgs.Patterns, parsedArgs.PatternsExclude,
           parsedArgs.Touch ? cmSystemTools::cmTarExtractTimestamps::No
                            : cmSystemTools::cmTarExtractTimestamps::Yes,
           parsedArgs.Encoding, parsedArgs.Verbose)) {
diff --git a/Source/cmGeneratorExpression.cxx b/Source/cmGeneratorExpression.cxx
index c7fffb4..7c8da04 100644
--- a/Source/cmGeneratorExpression.cxx
+++ b/Source/cmGeneratorExpression.cxx
@@ -521,7 +521,6 @@
     nullptr,
     context,
   };
-
   return this->CompiledGeneratorExpression->Evaluate(context, &dagChecker,
                                                      this->HeadTarget);
 }
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx
index 1203706..b4b702b 100644
--- a/Source/cmGlobalGenerator.cxx
+++ b/Source/cmGlobalGenerator.cxx
@@ -43,6 +43,7 @@
 #include "cmGeneratedFileStream.h"
 #include "cmGeneratorExpression.h"
 #include "cmGeneratorTarget.h"
+#include "cmInstallDirs.h"
 #include "cmInstallExportGenerator.h"
 #include "cmInstallGenerator.h"
 #include "cmInstallRuntimeDependencySet.h"
@@ -1731,12 +1732,6 @@
   // explicit install(SBOM) call.
   cmValue sbomFormat = this->GetGlobalSetting("CMAKE_INSTALL_SBOM_FORMATS");
   if (sbomFormat.IsSet() && sbomEnabled && !isTryCompile) {
-    std::string location =
-      this->Makefiles[0]->GetSafeDefinition("CMAKE_INSTALL_LIBDIR");
-    if (location.empty()) {
-      location = "lib";
-    }
-
     std::string projectName = this->LocalGenerators[0]->GetProjectName();
     for (auto& exportSet : this->ExportSets) {
       bool isCovered =
@@ -1748,17 +1743,23 @@
       if (isCovered) {
         continue;
       }
-      cmSbomArguments sbomDefaultArgs;
-      sbomDefaultArgs.ProjectName = projectName;
-      sbomDefaultArgs.PackageName = exportSet.first;
-      std::string dest = cmStrCat(location, "/sbom/", projectName);
-      this->Makefiles[0]->AddInstallGenerator(
-        cm::make_unique<cmInstallSbomGenerator>(
-          std::vector<cmExportSet*>{ &exportSet.second }, dest, "",
-          std::vector<std::string>(), "",
-          cmInstallGenerator::SelectMessageLevel(this->Makefiles[0].get()),
-          false, std::move(sbomDefaultArgs),
-          cmInstallGenerator::CaptureContext(this->Makefiles[0].get())));
+
+      cmSbomArguments args;
+      args.ProjectName = projectName;
+      args.PackageName = exportSet.first;
+      std::string dest = args.GetDefaultDestination(
+        cm::InstallDirs::GetLibraryDirectory(this->Makefiles[0].get()));
+
+      auto installGen = cm::make_unique<cmInstallSbomGenerator>(
+        std::vector<cmExportSet*>{ &exportSet.second }, dest, "",
+        std::vector<std::string>(), "",
+        cmInstallGenerator::SelectMessageLevel(this->Makefiles[0].get()),
+        false, std::move(args),
+        cmInstallGenerator::CaptureContext(this->Makefiles[0].get()));
+
+      cmInstallSbomGenerator const* rawPtr = installGen.get();
+      this->Makefiles[0]->AddInstallGenerator(std::move(installGen));
+      this->AddInstallSbomGenerator(rawPtr);
     }
   }
 #endif
@@ -1869,13 +1870,17 @@
     }
   }
 #ifndef CMAKE_BOOTSTRAP
+
   for (auto& sbomGen : this->BuildSbomGenerators) {
-    if (!sbomGen->GenerateForBuild()) {
-      if (!cmSystemTools::GetErrorOccurredFlag()) {
-        this->GetCMakeInstance()->IssueMessage(MessageType::FATAL_ERROR,
-                                               "Could not write SBOM file.");
+    for (std::string const& c : this->Makefiles[0]->GetGeneratorConfigs(
+           cmMakefile::IncludeEmptyConfig)) {
+      if (!sbomGen->GenerateForBuild(c)) {
+        if (!cmSystemTools::GetErrorOccurredFlag()) {
+          this->GetCMakeInstance()->IssueMessage(MessageType::FATAL_ERROR,
+                                                 "Could not write SBOM file.");
+        }
+        return;
       }
-      return;
     }
   }
 #endif
diff --git a/Source/cmInstallCommand.cxx b/Source/cmInstallCommand.cxx
index 2ddf39a..1ac993c 100644
--- a/Source/cmInstallCommand.cxx
+++ b/Source/cmInstallCommand.cxx
@@ -2565,12 +2565,8 @@
   // Get or construct the destination path.
   std::string dest = ica.GetDestination();
   if (dest.empty()) {
-    if (helper.Makefile->GetSafeDefinition("CMAKE_SYSTEM_NAME") == "Windows") {
-      dest = arguments.GetDefaultDestination();
-    } else {
-      dest =
-        arguments.GetDefaultDestination(helper.GetLibraryDestination(nullptr));
-    }
+    dest =
+      arguments.GetDefaultDestination(helper.GetLibraryDestination(nullptr));
   }
 
   // Check for CMD_INSTALL_ABSOLUTE_DESTINATION diagnostics.
@@ -2578,8 +2574,7 @@
 
   cmGlobalGenerator* gg = helper.Makefile->GetGlobalGenerator();
 
-  std::string const fpath =
-    cmStrCat(dest, '/', arguments.GetPackageFileName());
+  std::string const fpath = cmStrCat(dest, '/', arguments.GetPackageName());
   if (gg->IsInstallSbomFile(fpath)) {
     status.SetError(cmStrCat("SBOM command already specified for the file "_s,
                              cmSystemTools::GetFilenameNameView(fpath), '.'));
diff --git a/Source/cmInstallSbomBuilder.cxx b/Source/cmInstallSbomBuilder.cxx
index 5561ff5..00178c7 100644
--- a/Source/cmInstallSbomBuilder.cxx
+++ b/Source/cmInstallSbomBuilder.cxx
@@ -17,12 +17,14 @@
 {
 }
 
-bool cmInstallSbomBuilder::Generate(std::ostream& os)
+bool cmInstallSbomBuilder::Generate(std::ostream& os,
+                                    std::string const& config)
 {
   if (!this->LocalGenerator) {
     return false;
   }
-  return this->GenerateForTargets(os, cmGeneratorExpression::InstallInterface);
+  return this->GenerateForTargets(os, config,
+                                  cmGeneratorExpression::InstallInterface);
 }
 
 cmExportFileGenerator::ExportInfo cmInstallSbomBuilder::FindExportInfoFor(
diff --git a/Source/cmInstallSbomBuilder.h b/Source/cmInstallSbomBuilder.h
index cb436c7..77f231d 100644
--- a/Source/cmInstallSbomBuilder.h
+++ b/Source/cmInstallSbomBuilder.h
@@ -5,6 +5,7 @@
 #include "cmConfigure.h" // IWYU pragma: keep
 
 #include <iosfwd>
+#include <string>
 #include <vector>
 
 #include "cmExportFileGenerator.h"
@@ -23,7 +24,7 @@
                        std::vector<cmExportSet*> exportSets,
                        cmLocalGenerator* lg = nullptr);
 
-  bool Generate(std::ostream& os) override;
+  bool Generate(std::ostream& os, std::string const& config) override;
 
 protected:
   cmExportFileGenerator::ExportInfo FindExportInfoFor(
diff --git a/Source/cmInstallSbomGenerator.cxx b/Source/cmInstallSbomGenerator.cxx
index 0224d06..0db7a444 100644
--- a/Source/cmInstallSbomGenerator.cxx
+++ b/Source/cmInstallSbomGenerator.cxx
@@ -2,6 +2,7 @@
    file LICENSE.rst or https://cmake.org/licensing for details.  */
 #include "cmInstallSbomGenerator.h"
 
+#include <ostream>
 #include <utility>
 #include <vector>
 
@@ -13,7 +14,9 @@
 #include "cmInstallSbomBuilder.h"
 #include "cmInstallType.h"
 #include "cmLocalGenerator.h"
+#include "cmMakefile.h"
 #include "cmSbomArguments.h"
+#include "cmScriptGenerator.h"
 #include "cmStringAlgorithms.h"
 #include "cmSystemTools.h"
 
@@ -26,8 +29,9 @@
                        std::move(component), message, excludeFromAll, false,
                        std::move(context))
   , FilePermissions(std::move(filePermissions))
-  , SbomFileName(args.GetPackageFileName())
+  , SbomFileName(args.GetPackageName())
   , SbomFilePath(cmStrCat(this->Destination, '/', this->SbomFileName))
+  , SbomFormat(args.GetFormat())
   , Builder(cm::make_unique<cmInstallSbomBuilder>(std::move(args),
                                                   std::move(exportSets)))
 {
@@ -64,15 +68,20 @@
   cmCryptoHash hasher(cmCryptoHash::AlgoMD5);
   std::string const tempDir =
     cmStrCat(this->LocalGenerator->GetCurrentBinaryDirectory(),
-             "/CMakeFiles/Sbom/", hasher.HashString(this->Destination));
-
+             "/CMakeFiles/sbom/", hasher.HashString(this->Destination));
   cmSystemTools::MakeDirectory(tempDir);
 
-  this->TempSbomFilePath = cmStrCat(tempDir, '/', this->SbomFileName);
-
-  // Generate the SBOM file now, at cmake generate time.
-  cmGeneratedFileStream sbomStream(this->TempSbomFilePath);
-  this->Builder->Generate(sbomStream);
+  for (std::string const& c :
+       this->LocalGenerator->GetMakefile()->GetGeneratorConfigs(
+         cmMakefile::IncludeEmptyConfig)) {
+    std::string configName =
+      cmStrCat(tempDir, '/', this->SbomFileName, "-", c, ".spdx.json");
+    cmGeneratedFileStream sbomStream(configName);
+    this->TempSbomFiles.emplace(c, configName);
+    if (!this->Builder->Generate(sbomStream, c)) {
+      break;
+    }
+  }
 
   // Emit the cmake_install.cmake script to copy the file at install time.
   this->cmInstallGenerator::GenerateScript(os);
@@ -81,8 +90,12 @@
 void cmInstallSbomGenerator::GenerateScriptActions(std::ostream& os,
                                                    Indent indent)
 {
-  std::vector<std::string> files{ this->TempSbomFilePath };
-  this->AddInstallRule(os, this->Destination, cmInstallType_FILES, files,
-                       false, this->FilePermissions.c_str(), nullptr, nullptr,
-                       nullptr, indent);
+  for (auto const& i : this->TempSbomFiles) {
+    std::string configTest = this->CreateConfigTest(i.first);
+    os << indent << "if(" << configTest << ")\n";
+    this->AddInstallRule(os, this->Destination, cmInstallType_FILES,
+                         { i.second }, false, this->FilePermissions.c_str(),
+                         nullptr, nullptr, nullptr, indent.Next());
+    os << indent << "endif()\n";
+  }
 }
diff --git a/Source/cmInstallSbomGenerator.h b/Source/cmInstallSbomGenerator.h
index fd8dcde..2c65c05 100644
--- a/Source/cmInstallSbomGenerator.h
+++ b/Source/cmInstallSbomGenerator.h
@@ -5,18 +5,19 @@
 #include "cmConfigure.h" // IWYU pragma: keep
 
 #include <iosfwd>
+#include <map>
 #include <memory>
 #include <string>
 #include <vector>
 
 #include "cmInstallGenerator.h"
+#include "cmSbomArguments.h"
 
 class cmDiagnosticContext;
 class cmExportSet;
 class cmGeneratorTarget;
 class cmInstallSbomBuilder;
 class cmLocalGenerator;
-class cmSbomArguments;
 
 /** \class cmInstallSbomGenerator
  * \brief Generate installation rules for SBOM files.
@@ -59,10 +60,11 @@
   void GenerateScriptActions(std::ostream& os, Indent indent) override;
 
 private:
-  std::string TempSbomFilePath;
+  std::map<std::string, std::string> TempSbomFiles;
   std::string const FilePermissions;
   std::string const SbomFileName;
   std::string const SbomFilePath;
+  cmSbomArguments::SbomFormat SbomFormat;
   cmLocalGenerator* LocalGenerator = nullptr;
   std::unique_ptr<cmInstallSbomBuilder> Builder;
 };
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index fabf334..9dadef7 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -4251,7 +4251,7 @@
   }
 
   // Deprecate old policies.
-  if (status == cmPolicies::OLD && id <= cmPolicies::CMP0155 &&
+  if (status == cmPolicies::OLD && id <= cmPolicies::CMP0161 &&
       !(this->GetCMakeInstance()->GetIsInTryCompile() &&
         (
           // Policies set by cmCoreTryCompile::TryCompileCode.
@@ -4259,7 +4259,7 @@
           id == cmPolicies::CMP0104 || id == cmPolicies::CMP0123 ||
           id == cmPolicies::CMP0126 || id == cmPolicies::CMP0128 ||
           id == cmPolicies::CMP0136 || id == cmPolicies::CMP0141 ||
-          id == cmPolicies::CMP0155))) {
+          id == cmPolicies::CMP0155 || id == cmPolicies::CMP0157))) {
     std::unique_ptr<PolicyPushPop> ps;
     std::unique_ptr<DiagnosticPushPop> ds;
 
diff --git a/Source/cmSbomArguments.cxx b/Source/cmSbomArguments.cxx
index e3cdadd..155aefd 100644
--- a/Source/cmSbomArguments.cxx
+++ b/Source/cmSbomArguments.cxx
@@ -2,12 +2,8 @@
    file LICENSE.rst or https://cmake.org/licensing for details.  */
 #include "cmSbomArguments.h"
 
-#include <algorithm>
-
 #include <cm/string_view>
 
-#include "cmsys/String.h"
-
 #include "cmExecutionStatus.h"
 #include "cmGeneratorExpression.h"
 #include "cmStringAlgorithms.h"
@@ -82,7 +78,7 @@
   return cmStrCat(this->PackageName, "::"_s);
 }
 
-std::string cmSbomArguments::GetPackageDirName() const
+std::string cmSbomArguments::GetPackageName() const
 {
   return this->PackageName;
 }
@@ -91,9 +87,9 @@
   std::string const& root) const
 {
   if (root.empty()) {
-    return cmStrCat("sbom/"_s, this->GetPackageDirName());
+    return cmStrCat("sbom/"_s, this->GetPackageName());
   }
-  return cmStrCat(root, '/', "sbom/"_s, this->GetPackageDirName());
+  return cmStrCat(root, '/', "sbom/"_s, this->GetPackageName());
 }
 
 cmSbomArguments::SbomFormat cmSbomArguments::GetFormat() const
@@ -103,12 +99,3 @@
   }
   return ParseSbomFormat(this->Format);
 }
-
-std::string cmSbomArguments::GetPackageFileName() const
-{
-  std::string const pkgNameOnDisk = this->GetPackageDirName();
-  std::string format = GetSbomFileExtension(this->GetFormat());
-  std::transform(format.begin(), format.end(), format.begin(),
-                 cmsysString_tolower);
-  return cmStrCat(pkgNameOnDisk, format);
-}
diff --git a/Source/cmSbomArguments.h b/Source/cmSbomArguments.h
index 17bb3b5..ab62226 100644
--- a/Source/cmSbomArguments.h
+++ b/Source/cmSbomArguments.h
@@ -35,8 +35,7 @@
 
   bool Check(cmExecutionStatus& status) const override;
   std::string GetNamespace() const;
-  std::string GetPackageDirName() const;
-  std::string GetPackageFileName() const;
+  std::string GetPackageName() const;
   std::string GetDefaultDestination(std::string const& root = {}) const;
   SbomFormat GetFormat() const;
 
diff --git a/Source/cmSbomBuilder.cxx b/Source/cmSbomBuilder.cxx
index b4add75..16397a2 100644
--- a/Source/cmSbomBuilder.cxx
+++ b/Source/cmSbomBuilder.cxx
@@ -115,10 +115,11 @@
 }
 
 bool cmSbomBuilder::GenerateForTargets(
-  std::ostream& os, cmGeneratorExpression::PreprocessContext preprocessContext)
+  std::ostream& os, std::string const& config,
+  cmGeneratorExpression::PreprocessContext preprocessContext)
 {
   cmSbomDocument doc;
-  doc.Graph.reserve(256);
+  doc.Graph.reserve(512);
 
   cmSpdxCreationInfo const* ci =
     insert_back(doc.Graph, this->GenerateCreationInfo());
@@ -131,19 +132,23 @@
     this->PopulateLinkLibrariesProperty(target, preprocessContext, properties);
     this->PopulateInterfaceLinkLibrariesProperty(target, preprocessContext,
                                                  properties);
-
-    targetProps.push_back(
-      TargetProperties{ insert_back(project->RootElements,
-                                    this->GenerateImportTarget(ci, target)),
-                        target, std::move(properties) });
+    targetProps.push_back(TargetProperties{
+      insert_back(project->RootElements,
+                  this->GenerateImportTarget(ci, target)),
+      target,
+      std::move(properties),
+    });
   }
 
+  bool status = true;
   for (TargetProperties const& target : targetProps) {
-    this->GenerateProperties(doc, project, ci, target, targetProps);
+    status &=
+      this->GenerateProperties(doc, project, ci, target, targetProps, config);
   }
-
-  this->WriteSbom(doc, os);
-  return true;
+  if (status) {
+    this->WriteSbom(doc, os);
+  }
+  return status;
 }
 
 void cmSbomBuilder::WriteSbom(cmSbomDocument& doc, std::ostream& os) const
@@ -248,23 +253,31 @@
   return package;
 }
 
-void cmSbomBuilder::GenerateLinkProperties(
+bool cmSbomBuilder::GenerateLinkProperties(
   cmSbomDocument& doc, cmSpdxDocument* project, cmSpdxCreationInfo const* ci,
   std::string const& libraries, TargetProperties const& current,
-  std::vector<TargetProperties> const& allTargets) const
+  std::vector<TargetProperties> const& allTargets,
+  std::string const& config) const
 {
   auto itProp = current.Properties.find(libraries);
   if (itProp == current.Properties.end()) {
-    return;
+    return true;
   }
 
-  std::map<std::string, std::vector<std::string>> allowList = { { "LINK_ONLY",
-                                                                  {} } };
-  std::string interfaceLinkLibraries;
-  if (!cmGeneratorExpression::ForbidGeneratorExpressions(
-        current.Target, itProp->first, itProp->second, interfaceLinkLibraries,
-        allowList)) {
-    return;
+  cmGeneratorExpression ge(*current.Target->Makefile->GetCMakeInstance());
+  std::unique_ptr<cmCompiledGeneratorExpression> cge =
+    ge.Parse(itProp->second);
+  std::string evaluatedLibraries =
+    cge->Evaluate(current.Target->GetLocalGenerator(), config, current.Target);
+
+  if (cge->GetHadHeadSensitiveCondition()) {
+    current.Target->Makefile->IssueMessage(
+      MessageType::FATAL_ERROR,
+      cmStrCat("Property \"", libraries, "\" of target \"",
+               current.Target->GetName(),
+               "\" contains a generator expression that is not allowed for "
+               "SBOM generation."));
+    return false;
   }
 
   auto makeRel = [&](char const* id, char const* desc) {
@@ -316,26 +329,21 @@
     return { false, insert_back(project->Elements, std::move(pkg)) };
   };
 
-  auto handleDependencies = [&](std::vector<std::string> const& names,
-                                cmSpdxRelationship& internalDeps,
-                                cmSpdxRelationship& externalDeps) {
-    for (auto const& n : names) {
-      auto res = addArtifact(n);
-      if (!res.second) {
-        continue;
-      }
-
-      if (res.first) {
-        internalDeps.To.push_back(res.second);
-      } else {
-        externalDeps.To.push_back(res.second);
-      }
+  cmList names{ evaluatedLibraries };
+  names.sort();
+  names.remove_duplicates();
+  for (std::string const& n : names) {
+    auto res = addArtifact(n);
+    if (!res.second) {
+      continue;
     }
-  };
 
-  handleDependencies(allowList["LINK_ONLY"], linkLibraries, linkRequires);
-  handleDependencies(cmList{ interfaceLinkLibraries }, linkLibraries,
-                     buildRequires);
+    if (res.first) {
+      linkLibraries.To.push_back(res.second);
+    } else {
+      buildRequires.To.push_back(res.second);
+    }
+  }
 
   if (!linkLibraries.To.empty()) {
     insert_back(doc.Graph, std::move(linkLibraries));
@@ -346,18 +354,22 @@
   if (!buildRequires.To.empty()) {
     insert_back(doc.Graph, std::move(buildRequires));
   }
+  return true;
 }
 
 bool cmSbomBuilder::GenerateProperties(
   cmSbomDocument& doc, cmSpdxDocument* proj, cmSpdxCreationInfo const* ci,
   TargetProperties const& current,
-  std::vector<TargetProperties> const& allTargets) const
+  std::vector<TargetProperties> const& allTargets,
+  std::string const& config) const
 {
-  this->GenerateLinkProperties(doc, proj, ci, "LINK_LIBRARIES", current,
-                               allTargets);
-  this->GenerateLinkProperties(doc, proj, ci, "INTERFACE_LINK_LIBRARIES",
-                               current, allTargets);
-  return true;
+  bool status = true;
+  status &= this->GenerateLinkProperties(doc, proj, ci, "LINK_LIBRARIES",
+                                         current, allTargets, config);
+  status &= this->GenerateLinkProperties(
+    doc, proj, ci, "INTERFACE_LINK_LIBRARIES", current, allTargets, config);
+
+  return status;
 }
 
 bool cmSbomBuilder::PopulateLinkLibrariesProperty(
@@ -365,10 +377,11 @@
   cmGeneratorExpression::PreprocessContext preprocessRule,
   ImportPropertyMap& properties)
 {
-  static std::array<std::string, 3> const linkIfaceProps = {
-    { "LINK_LIBRARIES", "LINK_LIBRARIES_DIRECT",
-      "LINK_LIBRARIES_DIRECT_EXCLUDE" }
-  };
+  static std::array<std::string, 3> const linkIfaceProps = { {
+    "LINK_LIBRARIES",
+    "LINK_LIBRARIES_DIRECT",
+    "LINK_LIBRARIES_DIRECT_EXCLUDE",
+  } };
   bool hadLINK_LIBRARIES = false;
   for (std::string const& linkIfaceProp : linkIfaceProps) {
     if (cmValue input = target->GetProperty(linkIfaceProp)) {
diff --git a/Source/cmSbomBuilder.h b/Source/cmSbomBuilder.h
index 60672e6..961e9db 100644
--- a/Source/cmSbomBuilder.h
+++ b/Source/cmSbomBuilder.h
@@ -48,10 +48,9 @@
    *  query CoversTarget() before any Generate() runs. */
   void Compute(cmLocalGenerator* lg);
 
-  /** Produce the SBOM document on `os`.  Implementations pick the
-   *  generator-expression preprocess context (BuildInterface vs
-   *  InstallInterface) and delegate to GenerateForTargets. */
-  virtual bool Generate(std::ostream& os) = 0;
+  /** Produce the SBOM document on `os`.  Implementations select their own
+   *  target set (via CollectTargets) and preprocess context. */
+  virtual bool Generate(std::ostream& os, std::string const& config) = 0;
 
   /** Identifier this SBOM publishes itself as (the SPDX document name and
    *  the namespace under which other SBOMs refer to its contents). */
@@ -59,10 +58,13 @@
 
   /** True if `target` is one of the targets this SBOM directly describes. */
   bool CoversTarget(cmGeneratorTarget const* target) const;
-
-  /** True if `set` is one of the export sets this SBOM was built from. */
   bool CoversExportSet(cmExportSet const* set) const;
 
+  void AddConfiguration(std::string const& config)
+  {
+    this->Configurations.push_back(config);
+  }
+
   /** Names of peer SBOMs (same build/install mode) that cover a target.
    *  Used by NoteLinkedTarget to attribute a cross-reference when no
    *  install(export) namespace is available.  Sorted alphabetically. */
@@ -93,7 +95,7 @@
   /** Generate an sbom for the targets in this->SbomTargets. Each leaf class
    * calls this internally */
   bool GenerateForTargets(
-    std::ostream& os,
+    std::ostream& os, std::string const& config,
     cmGeneratorExpression::PreprocessContext preprocessContext);
 
   using ImportPropertyMap = std::map<std::string, std::string>;
@@ -115,15 +117,18 @@
   bool AddPackageInformation(cmSpdxPackage& artifact, std::string const& name,
                              cmPackageInformation const& package) const;
 
-  bool GenerateProperties(
-    cmSbomDocument& doc, cmSpdxDocument* project, cmSpdxCreationInfo const* ci,
-    TargetProperties const& current,
-    std::vector<TargetProperties> const& allTargets) const;
+  bool GenerateProperties(cmSbomDocument& doc, cmSpdxDocument* project,
+                          cmSpdxCreationInfo const* ci,
+                          TargetProperties const& current,
+                          std::vector<TargetProperties> const& allTargets,
+                          std::string const& config) const;
 
-  void GenerateLinkProperties(
-    cmSbomDocument& doc, cmSpdxDocument* project, cmSpdxCreationInfo const* ci,
-    std::string const& libraries, TargetProperties const& current,
-    std::vector<TargetProperties> const& allTargets) const;
+  bool GenerateLinkProperties(cmSbomDocument& doc, cmSpdxDocument* project,
+                              cmSpdxCreationInfo const* ci,
+                              std::string const& libraries,
+                              TargetProperties const& current,
+                              std::vector<TargetProperties> const& allTargets,
+                              std::string const& config) const;
 
   bool NoteLinkedTarget(cmGeneratorTarget const* target,
                         std::string const& linkedName,
@@ -176,4 +181,5 @@
   // Accumulated during generation
   std::map<std::string, LinkInfo> LinkTargets;
   std::map<std::string, cmPackageInformation> Requirements;
+  std::vector<std::string> Configurations;
 };
diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx
index d9a77de..7711dd4 100644
--- a/Source/cmSystemTools.cxx
+++ b/Source/cmSystemTools.cxx
@@ -2505,6 +2505,7 @@
 
 bool extract_tar(std::string const& arFileName,
                  std::vector<std::string> const& files,
+                 std::vector<std::string> const& excludeFiles,
                  std::string const& encoding, bool verbose,
                  cmSystemTools::cmTarExtractTimestamps extractTimestamps,
                  bool extract)
@@ -2551,6 +2552,14 @@
     }
   }
 
+  for (auto const& filename : excludeFiles) {
+    if (archive_match_exclude_pattern(matching, filename.c_str()) !=
+        ARCHIVE_OK) {
+      cmSystemTools::Error("Failed to add to exclusion list: " + filename);
+      return false;
+    }
+  }
+
   int r = cm_archive_read_open_filename(a, arFileName.c_str(), 10240);
   if (r) {
     ArchiveError("Problem with archive_read_open_filename(): ", a);
@@ -2644,15 +2653,17 @@
 
 bool cmSystemTools::ExtractTar(std::string const& arFileName,
                                std::vector<std::string> const& files,
+                               std::vector<std::string> const& excludeFiles,
                                cmTarExtractTimestamps extractTimestamps,
                                std::string const& encoding, bool verbose)
 {
 #if !defined(CMAKE_BOOTSTRAP)
-  return extract_tar(arFileName, files, encoding, verbose, extractTimestamps,
-                     true);
+  return extract_tar(arFileName, files, excludeFiles, encoding, verbose,
+                     extractTimestamps, true);
 #else
   (void)arFileName;
   (void)files;
+  (void)excludeFiles;
   (void)extractTimestamps;
   (void)encoding;
   (void)verbose;
@@ -2662,14 +2673,16 @@
 
 bool cmSystemTools::ListTar(std::string const& arFileName,
                             std::vector<std::string> const& files,
+                            std::vector<std::string> const& excludeFiles,
                             std::string const& encoding, bool verbose)
 {
 #if !defined(CMAKE_BOOTSTRAP)
-  return extract_tar(arFileName, files, encoding, verbose,
+  return extract_tar(arFileName, files, excludeFiles, encoding, verbose,
                      cmTarExtractTimestamps::Yes, false);
 #else
   (void)arFileName;
   (void)files;
+  (void)excludeFiles;
   (void)encoding;
   (void)verbose;
   return false;
diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h
index 17a6310..e72e5ea 100644
--- a/Source/cmSystemTools.h
+++ b/Source/cmSystemTools.h
@@ -523,6 +523,7 @@
 
   static bool ListTar(std::string const& arFileName,
                       std::vector<std::string> const& files,
+                      std::vector<std::string> const& excludeFiles,
                       std::string const& encoding, bool verbose);
   static bool CreateTar(std::string const& arFileName,
                         std::vector<std::string> const& files,
@@ -534,6 +535,7 @@
                         int compressionLevel = 0, int numThreads = 1);
   static bool ExtractTar(std::string const& arFileName,
                          std::vector<std::string> const& files,
+                         std::vector<std::string> const& excludeFiles,
                          cmTarExtractTimestamps extractTimestamps,
                          std::string const& encoding, bool verbose);
 
diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx
index 6610da0..e942370 100644
--- a/Source/cmcmd.cxx
+++ b/Source/cmcmd.cxx
@@ -2121,7 +2121,7 @@
       }
 
       if (action == cmSystemTools::TarActionList) {
-        if (!cmSystemTools::ListTar(outFile, files, encoding, verbose)) {
+        if (!cmSystemTools::ListTar(outFile, files, {}, encoding, verbose)) {
           cmSystemTools::Error("Problem listing tar: " + outFile);
           return 1;
         }
@@ -2136,7 +2136,7 @@
           return 1;
         }
       } else if (action == cmSystemTools::TarActionExtract) {
-        if (!cmSystemTools::ExtractTar(outFile, files, extractTimestamps,
+        if (!cmSystemTools::ExtractTar(outFile, files, {}, extractTimestamps,
                                        encoding, verbose)) {
           cmSystemTools::Error(
             cmStrCat("Problem extracting tar:\n  ", outFile));
diff --git a/Tests/Fuzzing/cmArchiveExtractFuzzer.cxx b/Tests/Fuzzing/cmArchiveExtractFuzzer.cxx
index 4fb2b73..ab72a9d 100644
--- a/Tests/Fuzzing/cmArchiveExtractFuzzer.cxx
+++ b/Tests/Fuzzing/cmArchiveExtractFuzzer.cxx
@@ -86,9 +86,10 @@
     std::vector<std::string> files;
 
     // Extract without verbose, with timestamps
+    std::vector<std::string> excludeFiles;
     bool result1 = cmSystemTools::ExtractTar(
-      archiveFile, files, cmSystemTools::cmTarExtractTimestamps::Yes, "UTF-8",
-      false);
+      archiveFile, files, excludeFiles,
+      cmSystemTools::cmTarExtractTimestamps::Yes, "UTF-8", false);
     (void)result1;
 
     // Restore directory BEFORE removing (can't remove cwd)
@@ -103,8 +104,8 @@
       // Extract with verbose, without timestamps
       files.clear();
       bool result2 = cmSystemTools::ExtractTar(
-        archiveFile, files, cmSystemTools::cmTarExtractTimestamps::No, "UTF-8",
-        true);
+        archiveFile, files, excludeFiles,
+        cmSystemTools::cmTarExtractTimestamps::No, "UTF-8", true);
       (void)result2;
 
       // Restore directory
diff --git a/Tests/RunCMake/CPackConfig/CMP0161-OLD-stderr.txt b/Tests/RunCMake/CPackConfig/CMP0161-OLD-stderr.txt
new file mode 100644
index 0000000..4d30221
--- /dev/null
+++ b/Tests/RunCMake/CPackConfig/CMP0161-OLD-stderr.txt
@@ -0,0 +1,12 @@
+^CMake Warning \(deprecated\) at CMP0161-OLD\.cmake:[0-9]+ \(cmake_policy\):
+  The OLD behavior for policy CMP0161 will be removed from a future version
+  of CMake\.
+
+  The cmake-policies\(7\) manual explains that the OLD behaviors of all
+  policies are deprecated and that a policy should be set to OLD only under
+  specific short-term circumstances\.  Projects should be ported to the NEW
+  behavior and not rely on setting a policy to OLD\.
+Call Stack \(most recent call first\):
+  CMakeLists\.txt:[0-9]+ \(include\)
+This warning is for project developers\.  Use -Wno-author or -Wno-deprecated
+to suppress it\.
diff --git a/Tests/RunCMake/CrosscompilingEmulator/AddTest-CMP0158-OLD-stderr.txt b/Tests/RunCMake/CrosscompilingEmulator/AddTest-CMP0158-OLD-stderr.txt
new file mode 100644
index 0000000..36e7cea
--- /dev/null
+++ b/Tests/RunCMake/CrosscompilingEmulator/AddTest-CMP0158-OLD-stderr.txt
@@ -0,0 +1,12 @@
+^CMake Warning \(deprecated\) at AddTest-CMP0158-OLD\.cmake:[0-9]+ \(cmake_policy\):
+  The OLD behavior for policy CMP0158 will be removed from a future version
+  of CMake\.
+
+  The cmake-policies\(7\) manual explains that the OLD behaviors of all
+  policies are deprecated and that a policy should be set to OLD only under
+  specific short-term circumstances\.  Projects should be ported to the NEW
+  behavior and not rely on setting a policy to OLD\.
+Call Stack \(most recent call first\):
+  CMakeLists\.txt:[0-9]+ \(include\)
+This warning is for project developers\.  Use -Wno-author or -Wno-deprecated
+to suppress it\.
diff --git a/Tests/RunCMake/EnvSbom/ApplicationTarget-install-check.cmake b/Tests/RunCMake/EnvSbom/ApplicationTarget-install-check.cmake
index b8c7070..8b670d5 100644
--- a/Tests/RunCMake/EnvSbom/ApplicationTarget-install-check.cmake
+++ b/Tests/RunCMake/EnvSbom/ApplicationTarget-install-check.cmake
@@ -1,2 +1,2 @@
-file(READ "${RunCMake_TEST_INSTALL_DIR}/lib/sbom/test_project/application_targets.spdx.json" content)
+file(READ "${RunCMake_TEST_INSTALL_DIR}/lib/sbom/application_targets/application_targets-Debug.spdx.json" content)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/ApplicationTarget-install-check.cmake)
diff --git a/Tests/RunCMake/EnvSbom/Config-check.cmake b/Tests/RunCMake/EnvSbom/Config-check.cmake
new file mode 100644
index 0000000..d5127a6
--- /dev/null
+++ b/Tests/RunCMake/EnvSbom/Config-check.cmake
@@ -0,0 +1,11 @@
+include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/Assertions.cmake)
+
+get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
+if(_isMultiConfig)
+  file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/sbom/800147c20378e0c5769bafa56e83195d/foo-Debug.spdx.json" DebugSbom)
+  file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/sbom/800147c20378e0c5769bafa56e83195d/foo-Release.spdx.json" ReleaseSbom)
+else()
+  file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/sbom/800147c20378e0c5769bafa56e83195d/foo-Debug.spdx.json" DebugSbom)
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/Config-check.cmake)
diff --git a/Tests/RunCMake/EnvSbom/Config.cmake b/Tests/RunCMake/EnvSbom/Config.cmake
new file mode 100644
index 0000000..12f1808
--- /dev/null
+++ b/Tests/RunCMake/EnvSbom/Config.cmake
@@ -0,0 +1 @@
+include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/Config.cmake)
diff --git a/Tests/RunCMake/EnvSbom/ForbiddenGenex-result.txt b/Tests/RunCMake/EnvSbom/ForbiddenGenex-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/EnvSbom/ForbiddenGenex-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/EnvSbom/ForbiddenGenex-stderr.txt b/Tests/RunCMake/EnvSbom/ForbiddenGenex-stderr.txt
new file mode 100644
index 0000000..d878e11
--- /dev/null
+++ b/Tests/RunCMake/EnvSbom/ForbiddenGenex-stderr.txt
@@ -0,0 +1,3 @@
+CMake Error in CMakeLists.txt:
+  Property "INTERFACE_LINK_LIBRARIES" of target "foo" contains a generator
+  expression that is not allowed for SBOM generation.
diff --git a/Tests/RunCMake/EnvSbom/ForbiddenGenex.cmake b/Tests/RunCMake/EnvSbom/ForbiddenGenex.cmake
new file mode 100644
index 0000000..623b5a8
--- /dev/null
+++ b/Tests/RunCMake/EnvSbom/ForbiddenGenex.cmake
@@ -0,0 +1 @@
+include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/ForbiddenGenex.cmake)
diff --git a/Tests/RunCMake/EnvSbom/Genex-check.cmake b/Tests/RunCMake/EnvSbom/Genex-check.cmake
new file mode 100644
index 0000000..38c1ddf
--- /dev/null
+++ b/Tests/RunCMake/EnvSbom/Genex-check.cmake
@@ -0,0 +1,11 @@
+include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/Assertions.cmake)
+
+get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
+if(_isMultiConfig)
+  file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/sbom/800147c20378e0c5769bafa56e83195d/foo-BarConfig.spdx.json" BarConfig)
+  file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/sbom/800147c20378e0c5769bafa56e83195d/foo-BazConfig.spdx.json" BazConfig)
+else()
+  file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/sbom/800147c20378e0c5769bafa56e83195d/foo-BarConfig.spdx.json" BarConfig)
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/Genex-check.cmake)
diff --git a/Tests/RunCMake/EnvSbom/Genex.cmake b/Tests/RunCMake/EnvSbom/Genex.cmake
new file mode 100644
index 0000000..208fc0b
--- /dev/null
+++ b/Tests/RunCMake/EnvSbom/Genex.cmake
@@ -0,0 +1 @@
+include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/Genex.cmake)
diff --git a/Tests/RunCMake/EnvSbom/InterfaceTarget-install-check.cmake b/Tests/RunCMake/EnvSbom/InterfaceTarget-install-check.cmake
index 0fba94c..b99155a 100644
--- a/Tests/RunCMake/EnvSbom/InterfaceTarget-install-check.cmake
+++ b/Tests/RunCMake/EnvSbom/InterfaceTarget-install-check.cmake
@@ -1,2 +1,2 @@
-file(READ "${RunCMake_TEST_INSTALL_DIR}/lib/sbom/test_project/interface_targets.spdx.json" content)
+file(READ "${RunCMake_TEST_INSTALL_DIR}/lib/sbom/interface_targets/interface_targets-Debug.spdx.json" content)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/InterfaceTarget-install-check.cmake)
diff --git a/Tests/RunCMake/EnvSbom/MissingPackageNamespace-install-check.cmake b/Tests/RunCMake/EnvSbom/MissingPackageNamespace-install-check.cmake
index f162630..e2f1048 100644
--- a/Tests/RunCMake/EnvSbom/MissingPackageNamespace-install-check.cmake
+++ b/Tests/RunCMake/EnvSbom/MissingPackageNamespace-install-check.cmake
@@ -1,2 +1,2 @@
-file(READ "${RunCMake_TEST_INSTALL_DIR}/lib/sbom/test_project/test_targets.spdx.json" content)
+file(READ "${RunCMake_TEST_INSTALL_DIR}/lib/sbom/test_targets/test_targets-Debug.spdx.json" content)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/MissingPackageNamespace-install-check.cmake)
diff --git a/Tests/RunCMake/EnvSbom/PartialCoverage-install-check.cmake b/Tests/RunCMake/EnvSbom/PartialCoverage-install-check.cmake
index f33fa32..19892ca 100644
--- a/Tests/RunCMake/EnvSbom/PartialCoverage-install-check.cmake
+++ b/Tests/RunCMake/EnvSbom/PartialCoverage-install-check.cmake
@@ -1,20 +1,20 @@
 set(failures "")
 
 foreach(f explicit_root_sbom explicit_subdir_sbom)
-  if(NOT EXISTS "${RunCMake_TEST_INSTALL_DIR}/${f}.spdx.json")
-    list(APPEND failures "expected explicit SBOM ${f}.spdx.json to exist")
+  if(NOT EXISTS "${RunCMake_TEST_INSTALL_DIR}/${f}-Debug.spdx.json")
+    list(APPEND failures "expected explicit SBOM ${f}-Debug.spdx.json to exist")
   endif()
 endforeach()
 
 foreach(f implicit_root implicit_subdir)
-  if(NOT EXISTS "${RunCMake_TEST_INSTALL_DIR}/lib/sbom/test_project/${f}.spdx.json")
-    list(APPEND failures "expected autogen SBOM ${f}.spdx.json to exist")
+  if(NOT EXISTS "${RunCMake_TEST_INSTALL_DIR}/lib/sbom/${f}/${f}-Debug.spdx.json")
+    list(APPEND failures "expected autogen SBOM ${f}-Debug.spdx.json to exist")
   endif()
 endforeach()
 
 foreach(f explicit_root explicit_subdir)
-  if(EXISTS "${RunCMake_TEST_INSTALL_DIR}/lib/sbom/test_project/${f}.spdx.json")
-    list(APPEND failures "autogen wrongly produced ${f}.spdx.json (should be suppressed by explicit install(SBOM))")
+  if(EXISTS "${RunCMake_TEST_INSTALL_DIR}/lib/sbom/${f}/${f}-Debug.spdx.json")
+    list(APPEND failures "autogen wrongly produced ${f}-Debug.spdx.json (should be suppressed by explicit install(SBOM))")
   endif()
 endforeach()
 
diff --git a/Tests/RunCMake/EnvSbom/ProjectMetadata-install-check.cmake b/Tests/RunCMake/EnvSbom/ProjectMetadata-install-check.cmake
index f836b65..ae99a64 100644
--- a/Tests/RunCMake/EnvSbom/ProjectMetadata-install-check.cmake
+++ b/Tests/RunCMake/EnvSbom/ProjectMetadata-install-check.cmake
@@ -1,2 +1,2 @@
-file(READ "${RunCMake_TEST_INSTALL_DIR}/lib/sbom/test/test_targets.spdx.json" content)
+file(READ "${RunCMake_TEST_INSTALL_DIR}/lib/sbom/test_targets/test_targets-Debug.spdx.json" content)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/ProjectMetadata-install-check.cmake)
diff --git a/Tests/RunCMake/EnvSbom/RunCMakeTest.cmake b/Tests/RunCMake/EnvSbom/RunCMakeTest.cmake
index a188fcc..78debd2 100644
--- a/Tests/RunCMake/EnvSbom/RunCMakeTest.cmake
+++ b/Tests/RunCMake/EnvSbom/RunCMakeTest.cmake
@@ -11,7 +11,7 @@
   set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${test}-build)
   set(RunCMake_TEST_OPTIONS ${common_test_options})
   if(NOT RunCMake_GENERATOR_IS_MULTI_CONFIG)
-    list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=DEBUG)
+    list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=Debug)
   endif()
   run_cmake(${test})
 endfunction()
@@ -23,7 +23,7 @@
   set(RunCMake_TEST_OPTIONS ${common_test_options} ${extra_options})
   list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_INSTALL_PREFIX=${RunCMake_TEST_INSTALL_DIR})
   if(NOT RunCMake_GENERATOR_IS_MULTI_CONFIG)
-    list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=DEBUG)
+    list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=Debug)
   endif()
 
   run_cmake(${test})
@@ -34,6 +34,14 @@
   run_cmake_command(${test}-install ${CMAKE_COMMAND} --install . --config Debug)
 endfunction()
 
+function(run_cmake_configure test)
+  set(extra_options ${ARGN})
+  set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${test}-build)
+  set(RunCMake_TEST_OPTIONS ${common_test_options} ${extra_options})
+  run_cmake(${test})
+endfunction()
+
+
 run_cmake_install(ApplicationTarget)
 run_cmake_install(InterfaceTarget)
 run_cmake_install(SharedTarget)
@@ -43,3 +51,7 @@
 run_cmake_install(PartialCoverage)
 
 run_cmake_error(ReferencesNonExportedTarget)
+
+run_cmake_configure(Config)
+run_cmake_configure(Genex)
+run_cmake_configure(ForbiddenGenex)
diff --git a/Tests/RunCMake/EnvSbom/SharedTarget-install-check.cmake b/Tests/RunCMake/EnvSbom/SharedTarget-install-check.cmake
index 7bcf116..f418838 100644
--- a/Tests/RunCMake/EnvSbom/SharedTarget-install-check.cmake
+++ b/Tests/RunCMake/EnvSbom/SharedTarget-install-check.cmake
@@ -1,2 +1,2 @@
-file(READ "${RunCMake_TEST_INSTALL_DIR}/lib/sbom/test_project/shared_targets.spdx.json" content)
+file(READ "${RunCMake_TEST_INSTALL_DIR}/lib/sbom/shared_targets/shared_targets-Debug.spdx.json" content)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/SharedTarget-install-check.cmake)
diff --git a/Tests/RunCMake/ExportSbom/ApplicationTarget-install-check.cmake b/Tests/RunCMake/ExportSbom/ApplicationTarget-install-check.cmake
index 0ff030e..86e9fe3 100644
--- a/Tests/RunCMake/ExportSbom/ApplicationTarget-install-check.cmake
+++ b/Tests/RunCMake/ExportSbom/ApplicationTarget-install-check.cmake
@@ -1,2 +1,2 @@
-file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/application_targets/application_targets.spdx.json" content)
+file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/application_targets/application_targets-Debug.spdx.json" content)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/ApplicationTarget-install-check.cmake)
diff --git a/Tests/RunCMake/ExportSbom/Config-check.cmake b/Tests/RunCMake/ExportSbom/Config-check.cmake
new file mode 100644
index 0000000..61f1b06
--- /dev/null
+++ b/Tests/RunCMake/ExportSbom/Config-check.cmake
@@ -0,0 +1,11 @@
+include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/Assertions.cmake)
+
+get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
+if(_isMultiConfig)
+  file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/foo/foo-Debug.spdx.json" DebugSbom)
+  file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/foo/foo-Release.spdx.json" ReleaseSbom)
+else()
+  file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/foo/foo-Debug.spdx.json" DebugSbom)
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/Config-check.cmake)
diff --git a/Tests/RunCMake/ExportSbom/Config.cmake b/Tests/RunCMake/ExportSbom/Config.cmake
new file mode 100644
index 0000000..8d10713
--- /dev/null
+++ b/Tests/RunCMake/ExportSbom/Config.cmake
@@ -0,0 +1,6 @@
+include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/Config.cmake)
+
+export(SBOM foo
+  EXPORTS foo
+  FORMAT "spdx-3.0+json"
+)
diff --git a/Tests/RunCMake/ExportSbom/DuplicateSbom-stderr.txt b/Tests/RunCMake/ExportSbom/DuplicateSbom-stderr.txt
index c0d4b12..bfc26ed 100644
--- a/Tests/RunCMake/ExportSbom/DuplicateSbom-stderr.txt
+++ b/Tests/RunCMake/ExportSbom/DuplicateSbom-stderr.txt
@@ -1,2 +1,2 @@
 CMake Error at DuplicateSbom\.cmake:[0-9]+ \(export\):
-  export SBOM command already specified for the file mySbom\.spdx\.json\.
+  export SBOM command already specified for the file mySbom.
diff --git a/Tests/RunCMake/ExportSbom/EmptyNamespaceFallback-install-check.cmake b/Tests/RunCMake/ExportSbom/EmptyNamespaceFallback-install-check.cmake
index ce8270e..ddc20d7 100644
--- a/Tests/RunCMake/ExportSbom/EmptyNamespaceFallback-install-check.cmake
+++ b/Tests/RunCMake/ExportSbom/EmptyNamespaceFallback-install-check.cmake
@@ -1,2 +1,2 @@
-file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/mySbom/mySbom.spdx.json" content)
+file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/mySbom/mySbom-Debug.spdx.json" content)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/EmptyNamespaceFallback-install-check.cmake)
diff --git a/Tests/RunCMake/ExportSbom/ForbiddenGenex-result.txt b/Tests/RunCMake/ExportSbom/ForbiddenGenex-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/ExportSbom/ForbiddenGenex-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/ExportSbom/ForbiddenGenex-stderr.txt b/Tests/RunCMake/ExportSbom/ForbiddenGenex-stderr.txt
new file mode 100644
index 0000000..d878e11
--- /dev/null
+++ b/Tests/RunCMake/ExportSbom/ForbiddenGenex-stderr.txt
@@ -0,0 +1,3 @@
+CMake Error in CMakeLists.txt:
+  Property "INTERFACE_LINK_LIBRARIES" of target "foo" contains a generator
+  expression that is not allowed for SBOM generation.
diff --git a/Tests/RunCMake/ExportSbom/ForbiddenGenex.cmake b/Tests/RunCMake/ExportSbom/ForbiddenGenex.cmake
new file mode 100644
index 0000000..2b6f6a5
--- /dev/null
+++ b/Tests/RunCMake/ExportSbom/ForbiddenGenex.cmake
@@ -0,0 +1,5 @@
+include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/ForbiddenGenex.cmake)
+export(SBOM foo
+  EXPORTS foo
+  FORMAT "spdx-3.0+json"
+)
diff --git a/Tests/RunCMake/ExportSbom/Genex-check.cmake b/Tests/RunCMake/ExportSbom/Genex-check.cmake
new file mode 100644
index 0000000..9ae850e
--- /dev/null
+++ b/Tests/RunCMake/ExportSbom/Genex-check.cmake
@@ -0,0 +1,11 @@
+include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/Assertions.cmake)
+
+get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
+if(_isMultiConfig)
+  file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/foo/foo-BarConfig.spdx.json" BarConfig)
+  file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/foo/foo-BazConfig.spdx.json" BazConfig)
+else()
+  file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/foo/foo-BarConfig.spdx.json" BarConfig)
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/Genex-check.cmake)
diff --git a/Tests/RunCMake/ExportSbom/Genex.cmake b/Tests/RunCMake/ExportSbom/Genex.cmake
new file mode 100644
index 0000000..fadbf19
--- /dev/null
+++ b/Tests/RunCMake/ExportSbom/Genex.cmake
@@ -0,0 +1,5 @@
+include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/Genex.cmake)
+export(SBOM foo
+  EXPORTS foo
+  FORMAT "spdx-3.0+json"
+)
diff --git a/Tests/RunCMake/ExportSbom/InterfaceTarget-install-check.cmake b/Tests/RunCMake/ExportSbom/InterfaceTarget-install-check.cmake
index 47f7e41..deaf2a1 100644
--- a/Tests/RunCMake/ExportSbom/InterfaceTarget-install-check.cmake
+++ b/Tests/RunCMake/ExportSbom/InterfaceTarget-install-check.cmake
@@ -1,2 +1,2 @@
-file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/interface_targets/interface_targets.spdx.json" content)
+file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/interface_targets/interface_targets-Debug.spdx.json" content)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/InterfaceTarget-install-check.cmake)
diff --git a/Tests/RunCMake/ExportSbom/MissingPackageNamespace-install-check.cmake b/Tests/RunCMake/ExportSbom/MissingPackageNamespace-install-check.cmake
index 2583d26..eacc28a 100644
--- a/Tests/RunCMake/ExportSbom/MissingPackageNamespace-install-check.cmake
+++ b/Tests/RunCMake/ExportSbom/MissingPackageNamespace-install-check.cmake
@@ -1,2 +1,2 @@
-file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/test_targets/test_targets.spdx.json" content)
+file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/test_targets/test_targets-Debug.spdx.json" content)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/MissingPackageNamespace-install-check.cmake)
diff --git a/Tests/RunCMake/ExportSbom/MultiSetSingleSbom-install-check.cmake b/Tests/RunCMake/ExportSbom/MultiSetSingleSbom-install-check.cmake
index 791c4cb..29a9c56 100644
--- a/Tests/RunCMake/ExportSbom/MultiSetSingleSbom-install-check.cmake
+++ b/Tests/RunCMake/ExportSbom/MultiSetSingleSbom-install-check.cmake
@@ -1,2 +1,2 @@
-file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/mySbom/mySbom.spdx.json" content)
+file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/mySbom/mySbom-Debug.spdx.json" content)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/MultiSetSingleSbom-install-check.cmake)
diff --git a/Tests/RunCMake/ExportSbom/ProjectMetadata-install-check.cmake b/Tests/RunCMake/ExportSbom/ProjectMetadata-install-check.cmake
index 502cd43..6797643 100644
--- a/Tests/RunCMake/ExportSbom/ProjectMetadata-install-check.cmake
+++ b/Tests/RunCMake/ExportSbom/ProjectMetadata-install-check.cmake
@@ -1,3 +1,3 @@
-file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/test_targets/test_targets.spdx.json" content)
+file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/test_targets/test_targets-Debug.spdx.json" content)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/ProjectMetadata-install-check.cmake)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/ProjectMetadataExplicitAssertions.cmake)
diff --git a/Tests/RunCMake/ExportSbom/Requirements-install-check.cmake b/Tests/RunCMake/ExportSbom/Requirements-install-check.cmake
index e0de7e7..c801c09 100644
--- a/Tests/RunCMake/ExportSbom/Requirements-install-check.cmake
+++ b/Tests/RunCMake/ExportSbom/Requirements-install-check.cmake
@@ -1,3 +1,3 @@
-file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/bar_sbom/bar_sbom.spdx.json" BAR_CONTENT)
-file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/foo_sbom/foo_sbom.spdx.json" FOO_CONTENT)
+file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/bar_sbom/bar_sbom-Debug.spdx.json" BAR_CONTENT)
+file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/foo_sbom/foo_sbom-Debug.spdx.json" FOO_CONTENT)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/Requirements-install-check.cmake)
diff --git a/Tests/RunCMake/ExportSbom/RunCMakeTest.cmake b/Tests/RunCMake/ExportSbom/RunCMakeTest.cmake
index 244b349..4f1f0ef 100644
--- a/Tests/RunCMake/ExportSbom/RunCMakeTest.cmake
+++ b/Tests/RunCMake/ExportSbom/RunCMakeTest.cmake
@@ -9,7 +9,7 @@
   set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${test}-build)
   set(RunCMake_TEST_OPTIONS ${common_test_options})
   if(NOT RunCMake_GENERATOR_IS_MULTI_CONFIG)
-    list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=DEBUG)
+    list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=Debug)
   endif()
   run_cmake(${test})
 endfunction()
@@ -21,7 +21,7 @@
   set(RunCMake_TEST_OPTIONS ${common_test_options} ${extra_options})
   list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_INSTALL_PREFIX=${RunCMake_TEST_INSTALL_DIR})
   if(NOT RunCMake_GENERATOR_IS_MULTI_CONFIG)
-    list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=DEBUG)
+    list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=Debug)
   endif()
 
   run_cmake(${test})
@@ -32,6 +32,13 @@
   run_cmake_command(${test}-install ${CMAKE_COMMAND} --install . --config Debug)
 endfunction()
 
+function(run_cmake_configure test)
+  set(extra_options ${ARGN})
+  set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${test}-build)
+  set(RunCMake_TEST_OPTIONS ${common_test_options} ${extra_options})
+  run_cmake(${test})
+endfunction()
+
 run_cmake_install(ApplicationTarget)
 run_cmake_install(InstallExportPlusSbomSameSet)
 run_cmake_install(InterfaceTarget)
@@ -50,3 +57,7 @@
 run_cmake_error(MultiNamespaceAmbiguity)
 run_cmake_error(MultiSetAmbiguity)
 run_cmake_error(DuplicateSbom)
+
+run_cmake_configure(Config)
+run_cmake_configure(Genex)
+run_cmake_configure(ForbiddenGenex)
diff --git a/Tests/RunCMake/ExportSbom/SbomNamespaceAmbiguity-install-check.cmake b/Tests/RunCMake/ExportSbom/SbomNamespaceAmbiguity-install-check.cmake
index 31aa1bc..79684b2 100644
--- a/Tests/RunCMake/ExportSbom/SbomNamespaceAmbiguity-install-check.cmake
+++ b/Tests/RunCMake/ExportSbom/SbomNamespaceAmbiguity-install-check.cmake
@@ -1,2 +1,2 @@
-file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/bar_sbom/bar_sbom.spdx.json" BAR_CONTENT)
+file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/bar_sbom/bar_sbom-Debug.spdx.json" BAR_CONTENT)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/SbomNamespaceAmbiguity-install-check.cmake)
diff --git a/Tests/RunCMake/ExportSbom/SbomNamespaceFallback-install-check.cmake b/Tests/RunCMake/ExportSbom/SbomNamespaceFallback-install-check.cmake
index df0183c..08ded79 100644
--- a/Tests/RunCMake/ExportSbom/SbomNamespaceFallback-install-check.cmake
+++ b/Tests/RunCMake/ExportSbom/SbomNamespaceFallback-install-check.cmake
@@ -1,3 +1,3 @@
-file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/bar/bar.spdx.json" BAR_CONTENT)
-file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/foo/foo.spdx.json" FOO_CONTENT)
+file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/bar/bar-Debug.spdx.json" BAR_CONTENT)
+file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/foo/foo-Debug.spdx.json" FOO_CONTENT)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/SbomNamespaceFallback-install-check.cmake)
diff --git a/Tests/RunCMake/ExportSbom/SharedTarget-install-check.cmake b/Tests/RunCMake/ExportSbom/SharedTarget-install-check.cmake
index 66c1817..83bf00f 100644
--- a/Tests/RunCMake/ExportSbom/SharedTarget-install-check.cmake
+++ b/Tests/RunCMake/ExportSbom/SharedTarget-install-check.cmake
@@ -1,2 +1,2 @@
-file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/shared_targets/shared_targets.spdx.json" content)
+file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/shared_targets/shared_targets-Debug.spdx.json" content)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/SharedTarget-install-check.cmake)
diff --git a/Tests/RunCMake/ExportSbom/TargetInMultipleSets-install-check.cmake b/Tests/RunCMake/ExportSbom/TargetInMultipleSets-install-check.cmake
index 6a0d77f..5a79552 100644
--- a/Tests/RunCMake/ExportSbom/TargetInMultipleSets-install-check.cmake
+++ b/Tests/RunCMake/ExportSbom/TargetInMultipleSets-install-check.cmake
@@ -1,2 +1,2 @@
-file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/mySbom/mySbom.spdx.json" content)
+file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/mySbom/mySbom-Debug.spdx.json" content)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/TargetInMultipleSets-install-check.cmake)
diff --git a/Tests/RunCMake/File_Archive/RunCMakeTest.cmake b/Tests/RunCMake/File_Archive/RunCMakeTest.cmake
index 63071cb..6b4da44 100644
--- a/Tests/RunCMake/File_Archive/RunCMakeTest.cmake
+++ b/Tests/RunCMake/File_Archive/RunCMakeTest.cmake
@@ -68,6 +68,10 @@
 # Extracting only selected files or directories
 run_cmake(zip-filtered)
 
+# Excluding selected files or directories from extraction
+run_cmake(zip-filtered-exclude)
+run_cmake(zip-filtered-exclude-precedence)
+
 run_cmake(create-missing-args)
 run_cmake(extract-missing-args)
 
diff --git a/Tests/RunCMake/File_Archive/zip-filtered-exclude-precedence.cmake b/Tests/RunCMake/File_Archive/zip-filtered-exclude-precedence.cmake
new file mode 100644
index 0000000..5930e77
--- /dev/null
+++ b/Tests/RunCMake/File_Archive/zip-filtered-exclude-precedence.cmake
@@ -0,0 +1,28 @@
+set(OUTPUT_NAME "test.zip")
+
+set(ARCHIVE_FORMAT zip)
+
+# Combine inclusion and exclusion patterns.  When an entry matches both,
+# the exclusion takes precedence.
+set(DECOMPRESSION_OPTIONS
+  PATTERNS
+    "compress_dir/d1/*"    # include contents of d1
+    "compress_dir/d_4/*"   # include contents of d_4 ...
+  PATTERNS_EXCLUDE
+    "d_4"                  # ... but exclude d_4: exclusion wins
+)
+
+# Only the included-and-not-excluded entry survives.
+set(CUSTOM_CHECK_FILES
+  "d1/f1.txt"
+)
+
+set(NOT_EXISTING_FILES_CHECK
+  "f1.txt"        # never included by PATTERNS
+  "d 2/f1.txt"    # never included by PATTERNS
+  "d_4/f1.txt"    # included by PATTERNS but excluded: exclusion wins
+)
+
+include(${CMAKE_CURRENT_LIST_DIR}/roundtrip.cmake)
+
+check_magic("504b0304" LIMIT 4 HEX)
diff --git a/Tests/RunCMake/File_Archive/zip-filtered-exclude.cmake b/Tests/RunCMake/File_Archive/zip-filtered-exclude.cmake
new file mode 100644
index 0000000..866236a
--- /dev/null
+++ b/Tests/RunCMake/File_Archive/zip-filtered-exclude.cmake
@@ -0,0 +1,30 @@
+set(OUTPUT_NAME "test.zip")
+
+set(ARCHIVE_FORMAT zip)
+
+# Extract the whole archive except entries matching PATTERNS_EXCLUDE.
+set(DECOMPRESSION_OPTIONS
+  PATTERNS_EXCLUDE
+    "compress_dir/d 2/*"   # exclude everything under a directory
+    "d-4"                  # exclude by unanchored name (dir + contents)
+    "no_such_entry"        # matches nothing: must not be an error
+)
+
+# Everything that was not excluded must still be extracted.
+set(CUSTOM_CHECK_FILES
+  "f1.txt"
+  "d1/f1.txt"
+  "d + 3/f1.txt"
+  "d_4/f1.txt"                   # underscore, not the excluded "d-4"
+  "My Special Directory/f1.txt"
+)
+
+# The excluded entries must not be extracted.
+set(NOT_EXISTING_FILES_CHECK
+  "d 2/f1.txt"
+  "d-4/f1.txt"
+)
+
+include(${CMAKE_CURRENT_LIST_DIR}/roundtrip.cmake)
+
+check_magic("504b0304" LIMIT 4 HEX)
diff --git a/Tests/RunCMake/InstallSbom/ApplicationTarget-install-check.cmake b/Tests/RunCMake/InstallSbom/ApplicationTarget-install-check.cmake
index 5e1e606..874a424 100644
--- a/Tests/RunCMake/InstallSbom/ApplicationTarget-install-check.cmake
+++ b/Tests/RunCMake/InstallSbom/ApplicationTarget-install-check.cmake
@@ -1,2 +1,2 @@
-file(READ "${RunCMake_TEST_INSTALL_DIR}/application_targets.spdx.json" content)
+file(READ "${RunCMake_TEST_INSTALL_DIR}/application_targets-Debug.spdx.json" content)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/ApplicationTarget-install-check.cmake)
diff --git a/Tests/RunCMake/InstallSbom/Config-check.cmake b/Tests/RunCMake/InstallSbom/Config-check.cmake
new file mode 100644
index 0000000..634960b
--- /dev/null
+++ b/Tests/RunCMake/InstallSbom/Config-check.cmake
@@ -0,0 +1,11 @@
+include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/Assertions.cmake)
+
+get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
+if(_isMultiConfig)
+  file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/sbom/5058f1af8388633f609cadb75a75dc9d/foo-Debug.spdx.json" DebugSbom)
+  file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/sbom/5058f1af8388633f609cadb75a75dc9d/foo-Release.spdx.json" ReleaseSbom)
+else()
+  file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/sbom/5058f1af8388633f609cadb75a75dc9d/foo-Debug.spdx.json" DebugSbom)
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/Config-check.cmake)
diff --git a/Tests/RunCMake/InstallSbom/Config.cmake b/Tests/RunCMake/InstallSbom/Config.cmake
new file mode 100644
index 0000000..71f076a
--- /dev/null
+++ b/Tests/RunCMake/InstallSbom/Config.cmake
@@ -0,0 +1,6 @@
+include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/Config.cmake)
+install(SBOM foo
+  EXPORTS foo
+  FORMAT "spdx-3.0+json"
+  DESTINATION .
+)
diff --git a/Tests/RunCMake/InstallSbom/DuplicateSbom-stderr.txt b/Tests/RunCMake/InstallSbom/DuplicateSbom-stderr.txt
index 97a197b..03fdab3 100644
--- a/Tests/RunCMake/InstallSbom/DuplicateSbom-stderr.txt
+++ b/Tests/RunCMake/InstallSbom/DuplicateSbom-stderr.txt
@@ -1,2 +1,2 @@
 CMake Error at DuplicateSbom\.cmake:[0-9]+ \(install\):
-  install SBOM command already specified for the file mySbom\.spdx\.json\.
+  install SBOM command already specified for the file mySbom.
diff --git a/Tests/RunCMake/InstallSbom/EmptyNamespaceFallback-install-check.cmake b/Tests/RunCMake/InstallSbom/EmptyNamespaceFallback-install-check.cmake
index 3f61b5b..6fe86b3 100644
--- a/Tests/RunCMake/InstallSbom/EmptyNamespaceFallback-install-check.cmake
+++ b/Tests/RunCMake/InstallSbom/EmptyNamespaceFallback-install-check.cmake
@@ -1,2 +1,2 @@
-file(READ "${RunCMake_TEST_INSTALL_DIR}/mySbom.spdx.json" content)
+file(READ "${RunCMake_TEST_INSTALL_DIR}/mySbom-Debug.spdx.json" content)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/EmptyNamespaceFallback-install-check.cmake)
diff --git a/Tests/RunCMake/InstallSbom/ForbiddenGenex-result.txt b/Tests/RunCMake/InstallSbom/ForbiddenGenex-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/InstallSbom/ForbiddenGenex-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/InstallSbom/ForbiddenGenex-stderr.txt b/Tests/RunCMake/InstallSbom/ForbiddenGenex-stderr.txt
new file mode 100644
index 0000000..d878e11
--- /dev/null
+++ b/Tests/RunCMake/InstallSbom/ForbiddenGenex-stderr.txt
@@ -0,0 +1,3 @@
+CMake Error in CMakeLists.txt:
+  Property "INTERFACE_LINK_LIBRARIES" of target "foo" contains a generator
+  expression that is not allowed for SBOM generation.
diff --git a/Tests/RunCMake/InstallSbom/ForbiddenGenex.cmake b/Tests/RunCMake/InstallSbom/ForbiddenGenex.cmake
new file mode 100644
index 0000000..536d43e
--- /dev/null
+++ b/Tests/RunCMake/InstallSbom/ForbiddenGenex.cmake
@@ -0,0 +1,6 @@
+include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/ForbiddenGenex.cmake)
+install(SBOM foo
+  EXPORTS foo
+  FORMAT "spdx-3.0+json"
+  DESTINATION .
+)
diff --git a/Tests/RunCMake/InstallSbom/Genex-check.cmake b/Tests/RunCMake/InstallSbom/Genex-check.cmake
new file mode 100644
index 0000000..d03682b
--- /dev/null
+++ b/Tests/RunCMake/InstallSbom/Genex-check.cmake
@@ -0,0 +1,11 @@
+include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/Assertions.cmake)
+
+get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
+if(_isMultiConfig)
+  file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/sbom/5058f1af8388633f609cadb75a75dc9d/foo-BarConfig.spdx.json" BarConfig)
+  file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/sbom/5058f1af8388633f609cadb75a75dc9d/foo-BazConfig.spdx.json" BazConfig)
+else()
+  file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/sbom/5058f1af8388633f609cadb75a75dc9d/foo-BarConfig.spdx.json" BarConfig)
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/Genex-check.cmake)
diff --git a/Tests/RunCMake/InstallSbom/Genex.cmake b/Tests/RunCMake/InstallSbom/Genex.cmake
new file mode 100644
index 0000000..e07deb9
--- /dev/null
+++ b/Tests/RunCMake/InstallSbom/Genex.cmake
@@ -0,0 +1,6 @@
+include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/Genex.cmake)
+install(SBOM foo
+  EXPORTS foo
+  FORMAT "spdx-3.0+json"
+  DESTINATION .
+)
diff --git a/Tests/RunCMake/InstallSbom/InterfaceTarget-install-check.cmake b/Tests/RunCMake/InstallSbom/InterfaceTarget-install-check.cmake
index ef7f389..a181d84 100644
--- a/Tests/RunCMake/InstallSbom/InterfaceTarget-install-check.cmake
+++ b/Tests/RunCMake/InstallSbom/InterfaceTarget-install-check.cmake
@@ -1,2 +1,2 @@
-file(READ "${RunCMake_TEST_INSTALL_DIR}/interface_targets.spdx.json" content)
+file(READ "${RunCMake_TEST_INSTALL_DIR}/interface_targets-Debug.spdx.json" content)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/InterfaceTarget-install-check.cmake)
diff --git a/Tests/RunCMake/InstallSbom/MissingPackageNamespace-install-check.cmake b/Tests/RunCMake/InstallSbom/MissingPackageNamespace-install-check.cmake
index fe16bd8..3888828 100644
--- a/Tests/RunCMake/InstallSbom/MissingPackageNamespace-install-check.cmake
+++ b/Tests/RunCMake/InstallSbom/MissingPackageNamespace-install-check.cmake
@@ -1,2 +1,2 @@
-file(READ "${RunCMake_TEST_INSTALL_DIR}/test_targets.spdx.json" content)
+file(READ "${RunCMake_TEST_INSTALL_DIR}/test_targets-Debug.spdx.json" content)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/MissingPackageNamespace-install-check.cmake)
diff --git a/Tests/RunCMake/InstallSbom/MultiSetSingleSbom-install-check.cmake b/Tests/RunCMake/InstallSbom/MultiSetSingleSbom-install-check.cmake
index e1e8aa1..47cf3ca 100644
--- a/Tests/RunCMake/InstallSbom/MultiSetSingleSbom-install-check.cmake
+++ b/Tests/RunCMake/InstallSbom/MultiSetSingleSbom-install-check.cmake
@@ -1,2 +1,2 @@
-file(READ "${RunCMake_TEST_INSTALL_DIR}/mySbom.spdx.json" content)
+file(READ "${RunCMake_TEST_INSTALL_DIR}/mySbom-Debug.spdx.json" content)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/MultiSetSingleSbom-install-check.cmake)
diff --git a/Tests/RunCMake/InstallSbom/ProjectMetadata-install-check.cmake b/Tests/RunCMake/InstallSbom/ProjectMetadata-install-check.cmake
index 75adf4e..7308b84 100644
--- a/Tests/RunCMake/InstallSbom/ProjectMetadata-install-check.cmake
+++ b/Tests/RunCMake/InstallSbom/ProjectMetadata-install-check.cmake
@@ -1,3 +1,3 @@
-file(READ "${RunCMake_TEST_INSTALL_DIR}/test_targets.spdx.json" content)
+file(READ "${RunCMake_TEST_INSTALL_DIR}/test_targets-Debug.spdx.json" content)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/ProjectMetadata-install-check.cmake)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/ProjectMetadataExplicitAssertions.cmake)
diff --git a/Tests/RunCMake/InstallSbom/Requirements-install-check.cmake b/Tests/RunCMake/InstallSbom/Requirements-install-check.cmake
index 1c2f057..09f9a2a 100644
--- a/Tests/RunCMake/InstallSbom/Requirements-install-check.cmake
+++ b/Tests/RunCMake/InstallSbom/Requirements-install-check.cmake
@@ -1,3 +1,3 @@
-file(READ "${RunCMake_TEST_INSTALL_DIR}/bar_sbom.spdx.json" BAR_CONTENT)
-file(READ "${RunCMake_TEST_INSTALL_DIR}/foo_sbom.spdx.json" FOO_CONTENT)
+file(READ "${RunCMake_TEST_INSTALL_DIR}/bar_sbom-Debug.spdx.json" BAR_CONTENT)
+file(READ "${RunCMake_TEST_INSTALL_DIR}/foo_sbom-Debug.spdx.json" FOO_CONTENT)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/Requirements-install-check.cmake)
diff --git a/Tests/RunCMake/InstallSbom/RunCMakeTest.cmake b/Tests/RunCMake/InstallSbom/RunCMakeTest.cmake
index fcf9986..fd567a8 100644
--- a/Tests/RunCMake/InstallSbom/RunCMakeTest.cmake
+++ b/Tests/RunCMake/InstallSbom/RunCMakeTest.cmake
@@ -9,7 +9,7 @@
   set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${test}-build)
   set(RunCMake_TEST_OPTIONS ${common_test_options})
   if(NOT RunCMake_GENERATOR_IS_MULTI_CONFIG)
-    list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=DEBUG)
+    list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=Debug)
   endif()
   run_cmake(${test})
 endfunction()
@@ -21,7 +21,7 @@
   set(RunCMake_TEST_OPTIONS ${common_test_options} ${extra_options})
   list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_INSTALL_PREFIX=${RunCMake_TEST_INSTALL_DIR})
   if(NOT RunCMake_GENERATOR_IS_MULTI_CONFIG)
-    list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=DEBUG)
+    list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=Debug)
   endif()
 
   run_cmake(${test})
@@ -32,13 +32,16 @@
   run_cmake_command(${test}-install ${CMAKE_COMMAND} --install . --config Debug)
 endfunction()
 
+function(run_cmake_configure test)
+  set(extra_options ${ARGN})
+  set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${test}-build)
+  set(RunCMake_TEST_OPTIONS ${common_test_options} ${extra_options})
+  run_cmake(${test})
+endfunction()
+
 run_cmake_install(ApplicationTarget)
 run_cmake_install(InstallExportPlusSbomSameSet)
 run_cmake_install(InterfaceTarget)
-run_cmake_install(SharedTarget)
-run_cmake_install(Requirements)
-run_cmake_install(SbomNamespaceFallback)
-run_cmake_install(MultiSetSingleSbom)
 run_cmake_install(TargetInMultipleSets)
 run_cmake_install(EmptyNamespaceFallback -Wauthor)
 run_cmake_install(SbomNamespaceAmbiguity -Wauthor)
@@ -51,3 +54,7 @@
 run_cmake_error(MultiNamespaceAmbiguity)
 run_cmake_error(MultiSetAmbiguity)
 run_cmake_error(DuplicateSbom)
+
+run_cmake_configure(Config)
+run_cmake_configure(Genex)
+run_cmake_configure(ForbiddenGenex)
diff --git a/Tests/RunCMake/InstallSbom/SbomNamespaceAmbiguity-install-check.cmake b/Tests/RunCMake/InstallSbom/SbomNamespaceAmbiguity-install-check.cmake
index c35bcc0..580a84e 100644
--- a/Tests/RunCMake/InstallSbom/SbomNamespaceAmbiguity-install-check.cmake
+++ b/Tests/RunCMake/InstallSbom/SbomNamespaceAmbiguity-install-check.cmake
@@ -1,2 +1,2 @@
-file(READ "${RunCMake_TEST_INSTALL_DIR}/bar_sbom.spdx.json" BAR_CONTENT)
+file(READ "${RunCMake_TEST_INSTALL_DIR}/bar_sbom-Debug.spdx.json" BAR_CONTENT)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/SbomNamespaceAmbiguity-install-check.cmake)
diff --git a/Tests/RunCMake/InstallSbom/SbomNamespaceFallback-install-check.cmake b/Tests/RunCMake/InstallSbom/SbomNamespaceFallback-install-check.cmake
index dbbec2d..ee60380 100644
--- a/Tests/RunCMake/InstallSbom/SbomNamespaceFallback-install-check.cmake
+++ b/Tests/RunCMake/InstallSbom/SbomNamespaceFallback-install-check.cmake
@@ -1,3 +1,3 @@
-file(READ "${RunCMake_TEST_INSTALL_DIR}/bar.spdx.json" BAR_CONTENT)
-file(READ "${RunCMake_TEST_INSTALL_DIR}/foo.spdx.json" FOO_CONTENT)
+file(READ "${RunCMake_TEST_INSTALL_DIR}/bar-Debug.spdx.json" BAR_CONTENT)
+file(READ "${RunCMake_TEST_INSTALL_DIR}/foo-Debug.spdx.json" FOO_CONTENT)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/SbomNamespaceFallback-install-check.cmake)
diff --git a/Tests/RunCMake/InstallSbom/SharedTarget-install-check.cmake b/Tests/RunCMake/InstallSbom/SharedTarget-install-check.cmake
index 27fa653..e778cba 100644
--- a/Tests/RunCMake/InstallSbom/SharedTarget-install-check.cmake
+++ b/Tests/RunCMake/InstallSbom/SharedTarget-install-check.cmake
@@ -1,2 +1,2 @@
-file(READ "${RunCMake_TEST_INSTALL_DIR}/shared_targets.spdx.json" content)
+file(READ "${RunCMake_TEST_INSTALL_DIR}/shared_targets-Debug.spdx.json" content)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/SharedTarget-install-check.cmake)
diff --git a/Tests/RunCMake/InstallSbom/TargetInMultipleSets-install-check.cmake b/Tests/RunCMake/InstallSbom/TargetInMultipleSets-install-check.cmake
index 1d04796..063c386 100644
--- a/Tests/RunCMake/InstallSbom/TargetInMultipleSets-install-check.cmake
+++ b/Tests/RunCMake/InstallSbom/TargetInMultipleSets-install-check.cmake
@@ -1,2 +1,2 @@
-file(READ "${RunCMake_TEST_INSTALL_DIR}/mySbom.spdx.json" content)
+file(READ "${RunCMake_TEST_INSTALL_DIR}/mySbom-Debug.spdx.json" content)
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/TargetInMultipleSets-install-check.cmake)
diff --git a/Tests/RunCMake/Sbom/Config-check.cmake b/Tests/RunCMake/Sbom/Config-check.cmake
new file mode 100644
index 0000000..f347ff0
--- /dev/null
+++ b/Tests/RunCMake/Sbom/Config-check.cmake
@@ -0,0 +1,15 @@
+include(${CMAKE_CURRENT_LIST_DIR}/Assertions.cmake)
+
+function(check_config VAR_NAME1)
+  if(NOT "${${VAR_NAME1}}" STREQUAL "")
+    set(RunCMake_TEST_FAILED "${ERROR_MSG}" PARENT_SCOPE)
+  endif()
+endfunction()
+
+get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
+if(_isMultiConfig)
+  check_config(DebugSbom)
+  check_config(ReleaseSbom)
+else()
+  check_config(DebugSbom)
+endif()
diff --git a/Tests/RunCMake/Sbom/Config.cmake b/Tests/RunCMake/Sbom/Config.cmake
new file mode 100644
index 0000000..06799d2
--- /dev/null
+++ b/Tests/RunCMake/Sbom/Config.cmake
@@ -0,0 +1,12 @@
+get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
+if(_isMultiConfig)
+  set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "" FORCE)
+else()
+  if(NOT CMAKE_BUILD_TYPE)
+    set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "" FORCE)
+  endif()
+endif()
+
+project(Config C)
+add_library(foo ${CMAKE_CURRENT_LIST_DIR}/test.c)
+install(TARGETS foo EXPORT foo DESTINATION .)
diff --git a/Tests/RunCMake/Sbom/Empty-install-check.cmake b/Tests/RunCMake/Sbom/Empty-install-check.cmake
new file mode 100644
index 0000000..ffabf80
--- /dev/null
+++ b/Tests/RunCMake/Sbom/Empty-install-check.cmake
@@ -0,0 +1,7 @@
+include(${CMAKE_CURRENT_LIST_DIR}/Assertions.cmake)
+
+set(out_dir "${RunCMake_BINARY_DIR}/EmptyConfig-build")
+
+file(READ "${out_dir}/foo.cps" content)
+
+expect_object("${content}" "components" "foo" "configurations" "noconfig")
diff --git a/Tests/RunCMake/Sbom/Empty.cmake b/Tests/RunCMake/Sbom/Empty.cmake
new file mode 100644
index 0000000..ef1923b
--- /dev/null
+++ b/Tests/RunCMake/Sbom/Empty.cmake
@@ -0,0 +1,9 @@
+project(EmptyConfig CXX)
+
+set(CMAKE_BUILD_TYPE "" CACHE STRING "" FORCE)
+set(CMAKE_CONFIGURATION_TYPES "" CACHE STRING "" FORCE)
+
+add_library(foo foo.cxx)
+
+install(TARGETS foo EXPORT foo)
+install(SBOM foo EXPORT foo)
diff --git a/Tests/RunCMake/Sbom/ForbiddenGenex.cmake b/Tests/RunCMake/Sbom/ForbiddenGenex.cmake
new file mode 100644
index 0000000..bdddfb8
--- /dev/null
+++ b/Tests/RunCMake/Sbom/ForbiddenGenex.cmake
@@ -0,0 +1,14 @@
+project(ForbiddenGenex C)
+
+add_library(foo ${CMAKE_CURRENT_LIST_DIR}/test.c)
+
+find_package(
+  bar 1.3.4 REQUIRED
+  NO_DEFAULT_PATH
+  PATHS ${CMAKE_CURRENT_LIST_DIR}
+)
+
+target_link_libraries(foo INTERFACE
+  $<TARGET_PROPERTY:foo>
+)
+install(TARGETS foo EXPORT foo DESTINATION .)
diff --git a/Tests/RunCMake/Sbom/Genex-check.cmake b/Tests/RunCMake/Sbom/Genex-check.cmake
new file mode 100644
index 0000000..4e584ce
--- /dev/null
+++ b/Tests/RunCMake/Sbom/Genex-check.cmake
@@ -0,0 +1,111 @@
+include(${CMAKE_CURRENT_LIST_DIR}/Assertions.cmake)
+
+set(CREATION_INFO_EXPECTED [=[
+{
+  "@id": "_:Build#CreationInfo",
+  "comment": "This SBOM was generated from the CMakeLists.txt File",
+  "createdBy":
+  [
+    "https://gitlab.kitware.com/cmake/cmake"
+  ],
+  "specVersion": "3.0.1",
+  "type": "CreationInfo"
+}
+]=])
+
+set(SPDX_DOCUMENT_EXPECTED [=[
+{
+  "spdxId" : "urn:interface_targets#SPDXDocument",
+  "name": "interface_targets",
+  "profileConformance" :
+  [
+    "core",
+    "software"
+  ],
+  "creationInfo" : "_:Build#CreationInfo",
+  "type" : "SpdxDocument"
+}
+]=])
+
+set(APPLICATION_EXPECTED [=[
+{
+  "spdxId" : "urn:interface#Package",
+  "name" : "interface",
+  "software_primaryPurpose" : "library",
+  "type" : "software_Package"
+}
+]=])
+
+set(DEPENDENCY_EXPECTED [=[
+{
+  "spdxId" : "urn:bar:bar#Package",
+  "name" : "bar:bar",
+  "originatedBy" :
+  [
+    {
+      "name" : "bar",
+      "type" : "Organization"
+    }
+  ],
+  "software_packageVersion" : "1.3.5",
+  "type" : "software_Package"
+}
+]=])
+
+set(BAR_LINKED_LIBRARIES_EXPECTED [=[
+{
+  "creationInfo" : "_:Build#CreationInfo",
+  "description" : "Linked Libraries",
+  "from" : "urn:interface#Package",
+  "relationshipType" : "dependsOn",
+  "spdxId" : "urn:Static#Relationship",
+  "to" :
+  [
+    "urn:bar:bar#Package"
+  ],
+  "type" : "Relationship"
+}
+]=])
+
+set(BAZ_LINKED_LIBRARIES_EXPECTED [=[
+{
+  "creationInfo" : "_:Build#CreationInfo",
+  "description" : "Required Build-Time Libraries",
+  "from" : "urn:foo#Package",
+  "relationshipType" : "dependsOn",
+  "spdxId" : "urn:Shared#Relationship",
+  "to" :
+  [
+    "urn:baz#Package"
+  ],
+  "type" : "Relationship"
+}
+]=])
+
+
+function(check_config VAR_NAME LIBS)
+  set(content "${${VAR_NAME}}")
+  if("${content}" STREQUAL "")
+    set(RunCMake_TEST_FAILED "Error: Variable '${VAR_NAME}' is empty or not defined." PARENT_SCOPE)
+    return()
+  endif()
+
+  expect_value("${VAR_NAME}" "https://spdx.org/rdf/3.0.1/spdx-context.jsonld" "@context")
+  string(JSON CREATION_INFO GET "${content}" "@graph" "0")
+  expect_object("${CREATION_INFO}" CREATION_INFO_EXPECTED)
+
+  string(JSON SPDX_DOCUMENT GET "${content}" "@graph" "1")
+  expect_object("${SPDX_DOCUMENT}" SPDX_DOCUMENT_EXPECTED)
+  expect_object("${SPDX_DOCUMENT}" APPLICATION_EXPECTED "rootElement")
+  expect_object("${SPDX_DOCUMENT}" DEPENDENCY_EXPECTED "element")
+  string(JSON LINKED_LIBRARIES GET "${content}" "@graph" "2")
+  expect_object("${LINKED_LIBRARIES}" ${LIBS})
+endfunction()
+
+get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
+if(_isMultiConfig)
+  check_config(BarConfig BAR_LINKED_LIBRARIES_EXPECTED)
+  check_config(BazConfig BAZ_LINKED_LIBRARIES_EXPECTED)
+else()
+  check_config(BarConfig BAR_LINKED_LIBRARIES_EXPECTED)
+endif()
diff --git a/Tests/RunCMake/Sbom/Genex.cmake b/Tests/RunCMake/Sbom/Genex.cmake
new file mode 100644
index 0000000..baf5251
--- /dev/null
+++ b/Tests/RunCMake/Sbom/Genex.cmake
@@ -0,0 +1,28 @@
+get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
+if(_isMultiConfig)
+  set(CMAKE_CONFIGURATION_TYPES "BarConfig;BazConfig" CACHE STRING "" FORCE)
+else()
+  if(NOT CMAKE_BUILD_TYPE)
+    set(CMAKE_BUILD_TYPE "BarConfig" CACHE STRING "" FORCE)
+  endif()
+endif()
+
+project(Genex C)
+add_library(foo INTERFACE)
+
+find_package(
+  bar 1.3.4 REQUIRED
+  NO_DEFAULT_PATH
+  PATHS ${CMAKE_CURRENT_LIST_DIR}
+)
+
+find_package(
+  baz 1.3.4 REQUIRED
+  NO_DEFAULT_PATH
+  PATHS ${CMAKE_CURRENT_LIST_DIR}
+)
+
+target_link_libraries(foo INTERFACE $<$<CONFIG:BarConfig>:bar::bar>)
+target_link_libraries(foo INTERFACE $<$<CONFIG:BazConfig>:baz>)
+
+install(TARGETS foo EXPORT foo)
diff --git a/Tests/RunCMake/Swift/CMP0157-OLD-stderr.txt b/Tests/RunCMake/Swift/CMP0157-OLD-stderr.txt
new file mode 100644
index 0000000..2a4c473
--- /dev/null
+++ b/Tests/RunCMake/Swift/CMP0157-OLD-stderr.txt
@@ -0,0 +1,12 @@
+^CMake Warning \(deprecated\) at CMP0157-OLD\.cmake:[0-9]+ \(cmake_policy\):
+  The OLD behavior for policy CMP0157 will be removed from a future version
+  of CMake\.
+
+  The cmake-policies\(7\) manual explains that the OLD behaviors of all
+  policies are deprecated and that a policy should be set to OLD only under
+  specific short-term circumstances\.  Projects should be ported to the NEW
+  behavior and not rely on setting a policy to OLD\.
+Call Stack \(most recent call first\):
+  CMakeLists\.txt:[0-9]+ \(include\)
+This warning is for project developers\.  Use -Wno-author or -Wno-deprecated
+to suppress it\.
diff --git a/Tests/RunCMake/Swift/CMP0214-NEW-CMP0157-OLD-stderr.txt b/Tests/RunCMake/Swift/CMP0214-NEW-CMP0157-OLD-stderr.txt
new file mode 100644
index 0000000..c027815
--- /dev/null
+++ b/Tests/RunCMake/Swift/CMP0214-NEW-CMP0157-OLD-stderr.txt
@@ -0,0 +1,12 @@
+^CMake Warning \(deprecated\) at CMP0214-NEW-CMP0157-OLD\.cmake:[0-9]+ \(cmake_policy\):
+  The OLD behavior for policy CMP0157 will be removed from a future version
+  of CMake\.
+
+  The cmake-policies\(7\) manual explains that the OLD behaviors of all
+  policies are deprecated and that a policy should be set to OLD only under
+  specific short-term circumstances\.  Projects should be ported to the NEW
+  behavior and not rely on setting a policy to OLD\.
+Call Stack \(most recent call first\):
+  CMakeLists\.txt:[0-9]+ \(include\)
+This warning is for project developers\.  Use -Wno-author or -Wno-deprecated
+to suppress it\.
diff --git a/Tests/RunCMake/file-STRINGS/CMP0159-OLD-stderr.txt b/Tests/RunCMake/file-STRINGS/CMP0159-OLD-stderr.txt
new file mode 100644
index 0000000..2bf9f37
--- /dev/null
+++ b/Tests/RunCMake/file-STRINGS/CMP0159-OLD-stderr.txt
@@ -0,0 +1,12 @@
+^CMake Warning \(deprecated\) at CMP0159-OLD\.cmake:[0-9]+ \(cmake_policy\):
+  The OLD behavior for policy CMP0159 will be removed from a future version
+  of CMake\.
+
+  The cmake-policies\(7\) manual explains that the OLD behaviors of all
+  policies are deprecated and that a policy should be set to OLD only under
+  specific short-term circumstances\.  Projects should be ported to the NEW
+  behavior and not rely on setting a policy to OLD\.
+Call Stack \(most recent call first\):
+  CMakeLists\.txt:[0-9]+ \(include\)
+This warning is for project developers\.  Use -Wno-author or -Wno-deprecated
+to suppress it\.
diff --git a/Utilities/Doxygen/CMakeLists.txt b/Utilities/Doxygen/CMakeLists.txt
index 0d29b1c..e53435d 100644
--- a/Utilities/Doxygen/CMakeLists.txt
+++ b/Utilities/Doxygen/CMakeLists.txt
@@ -3,7 +3,7 @@
 
 if(NOT CMake_SOURCE_DIR)
   set(CMakeDeveloperReference_STANDALONE 1)
-  cmake_minimum_required(VERSION 3.13...4.2 FATAL_ERROR)
+  cmake_minimum_required(VERSION 3.13...4.3 FATAL_ERROR)
   get_filename_component(tmp "${CMAKE_CURRENT_SOURCE_DIR}" PATH)
   get_filename_component(CMake_SOURCE_DIR "${tmp}" PATH)
   include(${CMake_SOURCE_DIR}/Modules/CTestUseLaunchers.cmake)
diff --git a/Utilities/Sphinx/CMakeLists.txt b/Utilities/Sphinx/CMakeLists.txt
index ffb46e9..ee6becd 100644
--- a/Utilities/Sphinx/CMakeLists.txt
+++ b/Utilities/Sphinx/CMakeLists.txt
@@ -3,7 +3,7 @@
 
 if(NOT CMake_SOURCE_DIR)
   set(CMakeHelp_STANDALONE 1)
-  cmake_minimum_required(VERSION 3.13...4.2 FATAL_ERROR)
+  cmake_minimum_required(VERSION 3.13...4.3 FATAL_ERROR)
   get_filename_component(tmp "${CMAKE_CURRENT_SOURCE_DIR}" PATH)
   get_filename_component(CMake_SOURCE_DIR "${tmp}" PATH)
   include(${CMake_SOURCE_DIR}/Modules/CTestUseLaunchers.cmake)
