Browse Source

Merge topic 'export-refactor-arguments'

254916dfc6 export: Make PACKAGE_INFO, SBOM sub-commands
a121e5d49e export: Reset CPS export experimental gate

Acked-by: Kitware Robot <[email protected]>
Tested-by: buildbot <[email protected]>
Merge-request: !11584
Brad King 1 month ago
parent
commit
093b6974f1
72 changed files with 372 additions and 403 deletions
  1. 18 11
      Help/command/export.rst
  2. 1 1
      Help/dev/experimental.rst
  3. 1 1
      Source/cmExperimental.cxx
  4. 133 105
      Source/cmExportCommand.cxx
  5. 1 1
      Tests/RunCMake/CpsExportImportBuild/RunCMakeTest.cmake
  6. 2 2
      Tests/RunCMake/CpsExportImportBuild/TestLibrary.cmake
  7. 1 1
      Tests/RunCMake/CpsExportImportInstall/RunCMakeTest.cmake
  8. 2 2
      Tests/RunCMake/ExportPackageInfo/Appendix.cmake
  9. 23 1
      Tests/RunCMake/ExportPackageInfo/BadArgs0-stderr.txt
  10. 5 1
      Tests/RunCMake/ExportPackageInfo/BadArgs0.cmake
  11. 4 4
      Tests/RunCMake/ExportPackageInfo/BadArgs1.cmake
  12. 1 1
      Tests/RunCMake/ExportPackageInfo/BadArgs2.cmake
  13. 89 4
      Tests/RunCMake/ExportPackageInfo/BadArgs3-stderr.txt
  14. 13 2
      Tests/RunCMake/ExportPackageInfo/BadArgs3.cmake
  15. 0 1
      Tests/RunCMake/ExportPackageInfo/BadArgs4-result.txt
  16. 0 64
      Tests/RunCMake/ExportPackageInfo/BadArgs4-stderr.txt
  17. 0 14
      Tests/RunCMake/ExportPackageInfo/BadArgs4.cmake
  18. 0 1
      Tests/RunCMake/ExportPackageInfo/BadArgs5-result.txt
  19. 0 95
      Tests/RunCMake/ExportPackageInfo/BadArgs5-stderr.txt
  20. 0 15
      Tests/RunCMake/ExportPackageInfo/BadArgs5.cmake
  21. 1 1
      Tests/RunCMake/ExportPackageInfo/BadDefaultTarget.cmake
  22. 1 1
      Tests/RunCMake/ExportPackageInfo/BadName.cmake
  23. 2 2
      Tests/RunCMake/ExportPackageInfo/CompileOnly.cmake
  24. 2 2
      Tests/RunCMake/ExportPackageInfo/CompileOnlyRecursive.cmake
  25. 1 1
      Tests/RunCMake/ExportPackageInfo/Config.cmake
  26. 1 1
      Tests/RunCMake/ExportPackageInfo/DependencyVersionCMake.cmake
  27. 1 1
      Tests/RunCMake/ExportPackageInfo/DependencyVersionCps.cmake
  28. 2 2
      Tests/RunCMake/ExportPackageInfo/DependsMultipleCommon.cmake
  29. 2 2
      Tests/RunCMake/ExportPackageInfo/DuplicateOutput.cmake
  30. 1 1
      Tests/RunCMake/ExportPackageInfo/EmptyConfig.cmake
  31. 1 1
      Tests/RunCMake/ExportPackageInfo/ExperimentalGate-stderr.txt
  32. 1 1
      Tests/RunCMake/ExportPackageInfo/ExperimentalGate.cmake
  33. 2 2
      Tests/RunCMake/ExportPackageInfo/ExperimentalWarning.cmake
  34. 1 1
      Tests/RunCMake/ExportPackageInfo/ExportSymbolicComponent.cmake
  35. 1 1
      Tests/RunCMake/ExportPackageInfo/FileSetHeaders.cmake
  36. 1 1
      Tests/RunCMake/ExportPackageInfo/InterfaceProperties.cmake
  37. 2 2
      Tests/RunCMake/ExportPackageInfo/LinkInterfaceGeneratorExpression.cmake
  38. 2 2
      Tests/RunCMake/ExportPackageInfo/LinkOnly.cmake
  39. 2 2
      Tests/RunCMake/ExportPackageInfo/LinkOnlyRecursive.cmake
  40. 2 2
      Tests/RunCMake/ExportPackageInfo/LowerCaseFile.cmake
  41. 1 1
      Tests/RunCMake/ExportPackageInfo/Metadata.cmake
  42. 1 1
      Tests/RunCMake/ExportPackageInfo/Minimal.cmake
  43. 6 3
      Tests/RunCMake/ExportPackageInfo/MinimalVersion.cmake
  44. 1 1
      Tests/RunCMake/ExportPackageInfo/NoProjectMetadata.cmake
  45. 4 3
      Tests/RunCMake/ExportPackageInfo/ProjectMetadata.cmake
  46. 1 1
      Tests/RunCMake/ExportPackageInfo/ReferencesNonExportedTarget.cmake
  47. 1 1
      Tests/RunCMake/ExportPackageInfo/ReferencesWronglyExportedTarget.cmake
  48. 1 1
      Tests/RunCMake/ExportPackageInfo/ReferencesWronglyImportedTarget.cmake
  49. 1 1
      Tests/RunCMake/ExportPackageInfo/ReferencesWronglyNamespacedTarget.cmake
  50. 2 2
      Tests/RunCMake/ExportPackageInfo/Requirements.cmake
  51. 1 3
      Tests/RunCMake/ExportPackageInfo/RunCMakeTest.cmake
  52. 1 1
      Tests/RunCMake/ExportPackageInfo/TargetTypes.cmake
  53. 1 1
      Tests/RunCMake/ExportPackageInfo/TransitiveSymbolicComponent.cmake
  54. 7 7
      Tests/RunCMake/ExportPackageInfo/VersionCheck.cmake
  55. 1 1
      Tests/RunCMake/ExportPackageInfo/VersionCheckError.cmake
  56. 2 2
      Tests/RunCMake/ExportPackageInfo/VersionCheckWarning.cmake
  57. 1 1
      Tests/RunCMake/ExportSbom/ApplicationTarget.cmake
  58. 1 1
      Tests/RunCMake/ExportSbom/InterfaceTarget.cmake
  59. 1 1
      Tests/RunCMake/ExportSbom/MissingPackageNamespace.cmake
  60. 1 1
      Tests/RunCMake/ExportSbom/ProjectMetadata.cmake
  61. 1 1
      Tests/RunCMake/ExportSbom/ReferencesNonExportedTarget.cmake
  62. 2 2
      Tests/RunCMake/ExportSbom/Requirements.cmake
  63. 1 1
      Tests/RunCMake/ExportSbom/RunCMakeTest.cmake
  64. 1 1
      Tests/RunCMake/ExportSbom/SharedTarget.cmake
  65. 1 1
      Tests/RunCMake/InstallExportsAsPackageInfo/ExperimentalWarning.cmake
  66. 1 1
      Tests/RunCMake/InstallExportsAsPackageInfo/RunCMakeTest.cmake
  67. 1 1
      Tests/RunCMake/InstallPackageInfo/ExperimentalWarning.cmake
  68. 1 1
      Tests/RunCMake/InstallPackageInfo/RunCMakeTest.cmake
  69. 1 1
      Tests/RunCMake/InstallPackageInfo/VersionCheckWarning.cmake
  70. 1 1
      Tests/RunCMake/InstallSbom/RunCMakeTest.cmake
  71. 1 1
      Tests/RunCMake/project/KeywordProjectName.cmake
  72. 1 1
      Tests/RunCMake/project/RunCMakeTest.cmake

+ 18 - 11
Help/command/export.rst

@@ -16,6 +16,8 @@ Synopsis
   export(`EXPORT`_ <export-name> [...])
   export(`PACKAGE`_ <PackageName>)
   export(`SETUP`_ <export-name> [...])
+  export(`PACKAGE_INFO`_ <package-name> [...])
+  export(`SBOM`_ <sbom-name> [...])
 
 Exporting Targets
 ^^^^^^^^^^^^^^^^^
@@ -130,9 +132,12 @@ of the :command:`install(TARGETS)` command.
 Exporting Targets to the |CPS|
 """"""""""""""""""""""""""""""
 
+.. signature::
+  export(PACKAGE_INFO <package-name> [...])
+
 .. code-block:: cmake
 
-  export(EXPORT <export-name> PACKAGE_INFO <package-name>
+  export(PACKAGE_INFO <package-name> EXPORT <export-name>
          [PROJECT <project-name>|NO_PROJECT_METADATA]
          [APPENDIX <appendix-name>]
          [LOWER_CASE_FILE]
@@ -146,7 +151,7 @@ Exporting Targets to the |CPS|
          [DESCRIPTION <description-string>]
          [HOMEPAGE_URL <url-string>])
 
-.. versionadded:: 4.1
+.. versionadded:: 4.3
 .. note::
 
   Experimental. Gated by ``CMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO``.
@@ -165,17 +170,19 @@ See :command:`install(PACKAGE_INFO)` for a description of the other options.
 Exporting Software Bill of Materials (SBOM) Documents
 """""""""""""""""""""""""""""""""""""""""""""""""""""
 
+.. signature::
+  export(SBOM <sbom-name> [...])
+
 .. code-block:: cmake
 
-    export(EXPORT <export-name> SBOM <sbom-name>
-           [PROJECT <project-name>|NO_PROJECT_METADATA]
-           [DESTINATION <dir>]
-           [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]
-           [LICENSE <license-string>]
-           [DESCRIPTION <description-string>]
-           [HOMEPAGE_URL <url-string>]
-           [PACKAGE_URL <url-string>]
-           [FORMAT <string>])
+  export(SBOM <sbom-name> EXPORT <export-name>
+         [FORMAT <string>]
+         [PROJECT <project-name>|NO_PROJECT_METADATA]
+         [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]
+         [LICENSE <license-string>]
+         [DESCRIPTION <description-string>]
+         [HOMEPAGE_URL <url-string>]
+         [PACKAGE_URL <url-string>])
 
 .. versionadded:: 4.3
 .. note::

+ 1 - 1
Help/dev/experimental.rst

@@ -45,7 +45,7 @@ Export |CPS| Package Information
 In order to activate support for this experimental feature, set
 
 * variable ``CMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO`` to
-* value ``b80be207-778e-46ba-8080-b23bba22639e``.
+* value ``7fa7d13b-8308-4dc7-af39-9e450456d68f``.
 
 This UUID may change in future versions of CMake.  Be sure to use the value
 documented here by the source tree of the version of CMake with which you are

+ 1 - 1
Source/cmExperimental.cxx

@@ -48,7 +48,7 @@ cmExperimental::FeatureData const LookupTable[] = {
     cmExperimental::TryCompileCondition::Always },
   // ExportPackageInfo
   { "ExportPackageInfo",
-    "b80be207-778e-46ba-8080-b23bba22639e",
+    "7fa7d13b-8308-4dc7-af39-9e450456d68f",
     "CMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO",
     "CMake's support for exporting package information in the Common Package "
     "Specification format is experimental. It is meant only for "

+ 133 - 105
Source/cmExportCommand.cxx

@@ -51,6 +51,43 @@
 static void StorePackageRegistry(cmMakefile& mf, std::string const& package,
                                  char const* content, char const* hash);
 
+static cm::optional<cmExportSet*> GetExportSet(std::string const& name,
+                                               cmGlobalGenerator* generator,
+                                               cmExecutionStatus& status)
+{
+  cmExportSetMap& setMap = generator->GetExportSets();
+  auto const it = setMap.find(name);
+  if (it == setMap.end()) {
+    status.SetError(cmStrCat("Export set \""_s, name, "\" not found."_s));
+    return cm::nullopt;
+  }
+  return &it->second;
+}
+
+static void AddExportGenerator(
+  cmMakefile& makefile, cmGlobalGenerator* globalGenerator,
+  std::unique_ptr<cmExportBuildFileGenerator> exportGenerator,
+  std::string const& fileName, cmExportSet* exportSet,
+  std::string const& cxxModulesDirectory)
+{
+  exportGenerator->SetExportFile(fileName.c_str());
+  exportGenerator->SetCxxModuleDirectory(cxxModulesDirectory);
+  if (exportSet) {
+    exportGenerator->SetExportSet(exportSet);
+  }
+  std::vector<std::string> configurationTypes =
+    makefile.GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig);
+
+  for (std::string const& ct : configurationTypes) {
+    exportGenerator->AddConfiguration(ct);
+  }
+  if (exportSet) {
+    globalGenerator->AddBuildExportExportSet(exportGenerator.get());
+  }
+
+  makefile.AddExportBuildFileGenerator(std::move(exportGenerator));
+}
+
 static bool HandleTargetsMode(std::vector<std::string> const& args,
                               cmExecutionStatus& status)
 {
@@ -218,8 +255,6 @@ static bool HandleExportMode(std::vector<std::string> const& args,
     ArgumentParser::MaybeEmpty<std::string> Namespace;
     ArgumentParser::NonEmpty<std::string> Filename;
     ArgumentParser::NonEmpty<std::string> CxxModulesDirectory;
-    cm::optional<cmPackageInfoArguments> PackageInfo;
-    cm::optional<cmSbomArguments> Sbom;
     bool ExportPackageDependencies = false;
   };
 
@@ -237,39 +272,16 @@ static bool HandleExportMode(std::vector<std::string> const& args,
                 &ExportArguments::ExportPackageDependencies);
   }
 
-  cmArgumentParser<cmPackageInfoArguments> packageInfoParser;
-  cmPackageInfoArguments::Bind(packageInfoParser);
-
-  if (cmExperimental::HasSupportEnabled(
-        status.GetMakefile(), cmExperimental::Feature::ExportPackageInfo)) {
-    parser.BindSubParser("PACKAGE_INFO"_s, packageInfoParser,
-                         &ExportArguments::PackageInfo);
-  }
-
-  cmArgumentParser<cmSbomArguments> sbomParser;
-  cmSbomArguments::Bind(sbomParser);
-
-  if (cmExperimental::HasSupportEnabled(
-        status.GetMakefile(), cmExperimental::Feature::GenerateSbom)) {
-    parser.BindSubParser("SBOM"_s, sbomParser, &ExportArguments::Sbom);
-  }
-
   std::vector<std::string> unknownArgs;
   ExportArguments arguments = parser.Parse(args, &unknownArgs);
 
   cmMakefile& mf = status.GetMakefile();
   cmGlobalGenerator* gg = mf.GetGlobalGenerator();
 
-  if (arguments.PackageInfo && arguments.Sbom) {
-    status.SetError("PACKAGE_INFO and SBOM are mutually exclusive.");
-    return false;
-  }
-
   if (!arguments.Check(args[0], &unknownArgs, status)) {
     cmPolicies::PolicyStatus const p =
       status.GetMakefile().GetPolicyStatus(cmPolicies::CMP0208);
-    if (arguments.PackageInfo || arguments.Sbom || !unknownArgs.empty() ||
-        p == cmPolicies::NEW) {
+    if (!unknownArgs.empty() || p == cmPolicies::NEW) {
       return false;
     }
     if (p == cmPolicies::WARN) {
@@ -281,48 +293,9 @@ static bool HandleExportMode(std::vector<std::string> const& args,
     }
   }
 
-  if (arguments.PackageInfo) {
-    if (!arguments.Filename.empty()) {
-      status.SetError("PACKAGE_INFO and FILE are mutually exclusive.");
-      return false;
-    }
-    if (!arguments.Namespace.empty()) {
-      status.SetError("PACKAGE_INFO and NAMESPACE are mutually exclusive.");
-      return false;
-    }
-    if (!arguments.PackageInfo->Check(status) ||
-        !arguments.PackageInfo->SetMetadataFromProject(status)) {
-      return false;
-    }
-  }
-  if (arguments.Sbom) {
-    if (arguments.Sbom->PackageName.empty()) {
-      status.SetError("SBOM missing required value.");
-      return false;
-    }
-    if (!arguments.Filename.empty()) {
-      status.SetError("SBOM and FILE are mutually exclusive.");
-      return false;
-    }
-    if (!arguments.Namespace.empty()) {
-      status.SetError("SBOM and NAMESPACE are mutually exclusive.");
-      return false;
-    }
-    if (!arguments.Sbom->Check(status) ||
-        !arguments.Sbom->SetMetadataFromProject(status)) {
-      return false;
-    }
-  }
-
   std::string fname;
   if (arguments.Filename.empty()) {
-    if (arguments.PackageInfo) {
-      fname = arguments.PackageInfo->GetPackageFileName();
-    } else if (arguments.Sbom) {
-      fname = arguments.Sbom->GetPackageFileName();
-    } else {
-      fname = arguments.ExportSetName + ".cmake";
-    }
+    fname = arguments.ExportSetName + ".cmake";
   } else {
     if (cmSystemTools::GetFilenameLastExtension(arguments.Filename) !=
         ".cmake") {
@@ -349,60 +322,113 @@ static bool HandleExportMode(std::vector<std::string> const& args,
     fname = cmStrCat(dir, '/', fname);
   }
 
-  if (gg->GetExportedTargetsFile(fname)) {
-    if (arguments.PackageInfo) {
-      status.SetError(cmStrCat("command already specified for the file "_s,
-                               cmSystemTools::GetFilenameName(fname), '.'));
-      return false;
-    }
+  cm::optional<cmExportSet*> const exportSet =
+    GetExportSet(arguments.ExportSetName, gg, status);
+  if (!exportSet) {
+    return false;
   }
 
-  cmExportSet* exportSet = nullptr;
-  cmExportSetMap& setMap = gg->GetExportSets();
-  auto const it = setMap.find(arguments.ExportSetName);
-  if (it == setMap.end()) {
-    std::ostringstream e;
-    e << "Export set \"" << arguments.ExportSetName << "\" not found.";
-    status.SetError(e.str());
+  // Set up export file generation.
+  auto ebcg = cm::make_unique<cmExportBuildCMakeConfigGenerator>();
+  ebcg->SetNamespace(arguments.Namespace);
+  ebcg->SetExportPackageDependencies(arguments.ExportPackageDependencies);
+
+  AddExportGenerator(mf, gg, std::move(ebcg), fname, *exportSet,
+                     arguments.CxxModulesDirectory);
+  return true;
+}
+
+template <typename ArgumentsType, typename GeneratorType>
+static bool HandleSpecialExportMode(std::vector<std::string> const& args,
+                                    cmExecutionStatus& status)
+{
+  struct ExportArguments
+    : public ArgumentsType
+    , public ArgumentParser::ParseResult
+  {
+    ArgumentParser::NonEmpty<std::string> ExportSetName;
+    ArgumentParser::NonEmpty<std::string> CxxModulesDirectory;
+
+    using ArgumentsType::Check;
+    using ArgumentParser::ParseResult::Check;
+  };
+
+  auto parser =
+    cmArgumentParser<ExportArguments>{}
+      .Bind("EXPORT"_s, &ExportArguments::ExportSetName)
+      .Bind("CXX_MODULES_DIRECTORY"_s, &ExportArguments::CxxModulesDirectory);
+  ArgumentsType::Bind(parser);
+
+  std::vector<std::string> unknownArgs;
+  ExportArguments arguments = parser.Parse(args, &unknownArgs);
+
+  if (!arguments.Check(args[0], &unknownArgs, status)) {
     return false;
   }
-  exportSet = &it->second;
 
-  // Set up export file generation.
-  std::unique_ptr<cmExportBuildFileGenerator> ebfg = nullptr;
-  if (arguments.PackageInfo) {
-    auto ebpg = cm::make_unique<cmExportBuildPackageInfoGenerator>(
-      *arguments.PackageInfo);
-    ebfg = std::move(ebpg);
-  } else if (arguments.Sbom) {
-    auto ebsg = cm::make_unique<cmExportBuildSbomGenerator>(*arguments.Sbom);
-    ebfg = std::move(ebsg);
-  } else {
-    auto ebcg = cm::make_unique<cmExportBuildCMakeConfigGenerator>();
-    ebcg->SetNamespace(arguments.Namespace);
-    ebcg->SetExportPackageDependencies(arguments.ExportPackageDependencies);
-    ebfg = std::move(ebcg);
+  if (arguments.ExportSetName.empty()) {
+    status.SetError(cmStrCat(args[0], " missing EXPORT."));
+    return false;
   }
 
-  ebfg->SetExportFile(fname.c_str());
-  ebfg->SetCxxModuleDirectory(arguments.CxxModulesDirectory);
-  if (exportSet) {
-    ebfg->SetExportSet(exportSet);
+  if (!arguments.Check(status) || !arguments.SetMetadataFromProject(status)) {
+    return false;
   }
-  std::vector<std::string> configurationTypes =
-    mf.GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig);
 
-  for (std::string const& ct : configurationTypes) {
-    ebfg->AddConfiguration(ct);
+  cmMakefile& mf = status.GetMakefile();
+  cmGlobalGenerator* gg = mf.GetGlobalGenerator();
+
+  std::string const& dir = mf.GetCurrentBinaryDirectory();
+  std::string const fname = cmStrCat(dir, '/', arguments.GetPackageFileName());
+
+  if (gg->GetExportedTargetsFile(fname)) {
+    status.SetError(cmStrCat("command already specified for the file "_s,
+                             cmSystemTools::GetFilenameName(fname), '.'));
+    return false;
   }
-  if (exportSet) {
-    gg->AddBuildExportExportSet(ebfg.get());
+
+  // Look up the export set
+  cm::optional<cmExportSet*> const exportSet =
+    GetExportSet(arguments.ExportSetName, gg, status);
+  if (!exportSet) {
+    return false;
   }
 
-  mf.AddExportBuildFileGenerator(std::move(ebfg));
+  // Create the export build generator
+  auto ebpg = cm::make_unique<GeneratorType>(arguments);
+  AddExportGenerator(mf, gg, std::move(ebpg), fname, *exportSet,
+                     arguments.CxxModulesDirectory);
   return true;
 }
 
+static bool HandlePackageInfoMode(std::vector<std::string> const& args,
+                                  cmExecutionStatus& status)
+{
+  if (!cmExperimental::HasSupportEnabled(
+        status.GetMakefile(), cmExperimental::Feature::ExportPackageInfo)) {
+    status.SetError("does not recognize sub-command PACKAGE_INFO");
+    return false;
+  }
+
+  using arg_t = cmPackageInfoArguments;
+  using gen_t = cmExportBuildPackageInfoGenerator;
+  return HandleSpecialExportMode<arg_t, gen_t>(args, status);
+}
+
+static bool HandleSbomMode(std::vector<std::string> const& args,
+                           cmExecutionStatus& status)
+{
+  if (!cmExperimental::HasSupportEnabled(
+        status.GetMakefile(), cmExperimental::Feature::GenerateSbom)) {
+    status.SetError("does not recognize sub-command SBOM");
+    return false;
+  }
+
+  using arg_t = cmSbomArguments;
+  using gen_t = cmExportBuildSbomGenerator;
+  return HandleSpecialExportMode<arg_t, gen_t>(args, status);
+}
+
 static bool HandleSetupMode(std::vector<std::string> const& args,
                             cmExecutionStatus& status)
 {
@@ -675,6 +701,8 @@ bool cmExportCommand(std::vector<std::string> const& args,
     { "EXPORT"_s, HandleExportMode },
     { "SETUP"_s, HandleSetupMode },
     { "PACKAGE"_s, HandlePackageMode },
+    { "PACKAGE_INFO"_s, HandlePackageInfoMode },
+    { "SBOM"_s, HandleSbomMode },
   };
 
   return subcommand(args[0], args, status);

+ 1 - 1
Tests/RunCMake/CpsExportImportBuild/RunCMakeTest.cmake

@@ -2,7 +2,7 @@ include(RunCMake)
 
 set(RunCMake_TEST_OPTIONS
   -Wno-dev
-  "-DCMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO:STRING=b80be207-778e-46ba-8080-b23bba22639e"
+  "-DCMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO:STRING=7fa7d13b-8308-4dc7-af39-9e450456d68f"
   "-DCMAKE_EXPERIMENTAL_FIND_CPS_PACKAGES:STRING=e82e467b-f997-4464-8ace-b00808fff261"
   )
 

+ 2 - 2
Tests/RunCMake/CpsExportImportBuild/TestLibrary.cmake

@@ -27,7 +27,7 @@ target_sources(libb
 target_link_libraries(libb PUBLIC liba)
 
 install(TARGETS liba EXPORT liba FILE_SET HEADERS)
-export(EXPORT liba PACKAGE_INFO liba)
+export(PACKAGE_INFO liba EXPORT liba)
 
 install(TARGETS libb EXPORT libb FILE_SET HEADERS)
-export(EXPORT libb PACKAGE_INFO libb)
+export(PACKAGE_INFO libb EXPORT libb)

+ 1 - 1
Tests/RunCMake/CpsExportImportInstall/RunCMakeTest.cmake

@@ -2,7 +2,7 @@ include(RunCMake)
 
 set(RunCMake_TEST_OPTIONS
   -Wno-dev
-  "-DCMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO:STRING=b80be207-778e-46ba-8080-b23bba22639e"
+  "-DCMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO:STRING=7fa7d13b-8308-4dc7-af39-9e450456d68f"
   "-DCMAKE_EXPERIMENTAL_FIND_CPS_PACKAGES:STRING=e82e467b-f997-4464-8ace-b00808fff261"
   )
 

+ 2 - 2
Tests/RunCMake/ExportPackageInfo/Appendix.cmake

@@ -6,13 +6,13 @@ install(TARGETS mammal EXPORT mammal DESTINATION .)
 install(TARGETS canine EXPORT canine DESTINATION .)
 
 export(
-  EXPORT mammal
   PACKAGE_INFO foo
+  EXPORT mammal
   VERSION 1.0
   DEFAULT_LICENSE "LGPL-3.0-or-later")
 
 export(
-  EXPORT canine
   PACKAGE_INFO foo
+  EXPORT canine
   APPENDIX dog
   DEFAULT_LICENSE "GPL-3.0-or-later")

+ 23 - 1
Tests/RunCMake/ExportPackageInfo/BadArgs0-stderr.txt

@@ -1,5 +1,27 @@
 CMake Error at BadArgs0\.cmake:[0-9]+ \(export\):
-  export EXPORT given invalid argument:
+  export PACKAGE_INFO given invalid argument:
+
+    PACKAGE_INFO: missing required value
+Call Stack \(most recent call first\):
+  CMakeLists\.txt:3 \(include\)
+
+
+CMake Error at BadArgs0\.cmake:[0-9]+ \(export\):
+  export PACKAGE_INFO missing EXPORT\.
+Call Stack \(most recent call first\):
+  CMakeLists\.txt:3 \(include\)
+
+
+CMake Error at BadArgs0\.cmake:[0-9]+ \(export\):
+  export PACKAGE_INFO given invalid argument:
+
+    EXPORT: missing required value
+Call Stack \(most recent call first\):
+  CMakeLists\.txt:3 \(include\)
+
+
+CMake Error at BadArgs0\.cmake:[0-9]+ \(export\):
+  export PACKAGE_INFO given invalid argument:
 
     PACKAGE_INFO: missing required value
 Call Stack \(most recent call first\):

+ 5 - 1
Tests/RunCMake/ExportPackageInfo/BadArgs0.cmake

@@ -1,3 +1,7 @@
+export(PACKAGE_INFO)
+export(PACKAGE_INFO test)
+export(PACKAGE_INFO test EXPORT)
+
 add_library(foo INTERFACE)
 install(TARGETS foo EXPORT foo DESTINATION .)
-export(EXPORT foo PACKAGE_INFO)
+export(PACKAGE_INFO EXPORT foo)

+ 4 - 4
Tests/RunCMake/ExportPackageInfo/BadArgs1.cmake

@@ -1,6 +1,6 @@
 add_library(foo INTERFACE)
 install(TARGETS foo EXPORT foo DESTINATION .)
-export(EXPORT foo PACKAGE_INFO foo COMPAT_VERSION 1.0)
-export(EXPORT foo PACKAGE_INFO foo VERSION_SCHEMA simple)
-export(EXPORT foo PACKAGE_INFO foo PROJECT foo NO_PROJECT_METADATA)
-export(EXPORT foo PACKAGE_INFO foo PROJECT bar)
+export(PACKAGE_INFO foo EXPORT foo COMPAT_VERSION 1.0)
+export(PACKAGE_INFO foo EXPORT foo VERSION_SCHEMA simple)
+export(PACKAGE_INFO foo EXPORT foo PROJECT foo NO_PROJECT_METADATA)
+export(PACKAGE_INFO foo EXPORT foo PROJECT bar)

+ 1 - 1
Tests/RunCMake/ExportPackageInfo/BadArgs2.cmake

@@ -1,6 +1,6 @@
 add_library(foo INTERFACE)
 install(TARGETS foo EXPORT foo DESTINATION .)
-set(args EXPORT foo PACKAGE_INFO foo APPENDIX test)
+set(args PACKAGE_INFO foo EXPORT foo APPENDIX test)
 export(${args} VERSION 1.0)
 export(${args} LICENSE "BSD-3-Clause AND CC-BY-SA-4.0")
 export(${args} DESCRIPTION "Test")

+ 89 - 4
Tests/RunCMake/ExportPackageInfo/BadArgs3-stderr.txt

@@ -1,10 +1,95 @@
-CMake Error at BadArgs3\.cmake:3 \(export\):
-  export PACKAGE_INFO and FILE are mutually exclusive\.
+CMake Error at BadArgs3\.cmake:[0-9]+ \(export\):
+  export PACKAGE_INFO given invalid argument:
+
+    APPENDIX: missing required value
+Call Stack \(most recent call first\):
+  CMakeLists\.txt:3 \(include\)
+
+
+CMake Error at BadArgs3\.cmake:[0-9]+ \(export\):
+  export PACKAGE_INFO given invalid argument:
+
+    VERSION: missing required value
+Call Stack \(most recent call first\):
+  CMakeLists\.txt:3 \(include\)
+
+
+CMake Error at BadArgs3\.cmake:[0-9]+ \(export\):
+  export PACKAGE_INFO given invalid argument:
+
+    COMPAT_VERSION: missing required value
+Call Stack \(most recent call first\):
+  CMakeLists\.txt:3 \(include\)
+
+
+CMake Error at BadArgs3\.cmake:[0-9]+ \(export\):
+  export PACKAGE_INFO given invalid argument:
+
+    VERSION_SCHEMA: missing required value
+Call Stack \(most recent call first\):
+  CMakeLists\.txt:3 \(include\)
+
+
+CMake Error at BadArgs3\.cmake:[0-9]+ \(export\):
+  export PACKAGE_INFO given invalid argument:
+
+    LICENSE: missing required value
+Call Stack \(most recent call first\):
+  CMakeLists\.txt:3 \(include\)
+
+
+CMake Error at BadArgs3\.cmake:[0-9]+ \(export\):
+  export PACKAGE_INFO given invalid argument:
+
+    DEFAULT_LICENSE: missing required value
 Call Stack \(most recent call first\):
   CMakeLists\.txt:3 \(include\)
 
 
-CMake Error at BadArgs3\.cmake:4 \(export\):
-  export PACKAGE_INFO and NAMESPACE are mutually exclusive\.
+CMake Error at BadArgs3\.cmake:[0-9]+ \(export\):
+  export PACKAGE_INFO given invalid argument:
+
+    DESCRIPTION: missing required value
+Call Stack \(most recent call first\):
+  CMakeLists\.txt:3 \(include\)
+
+
+CMake Error at BadArgs3\.cmake:[0-9]+ \(export\):
+  export PACKAGE_INFO given invalid argument:
+
+    HOMEPAGE_URL: missing required value
+Call Stack \(most recent call first\):
+  CMakeLists\.txt:3 \(include\)
+
+
+CMake Error at BadArgs3\.cmake:[0-9]+ \(export\):
+  export PACKAGE_INFO given invalid argument:
+
+    DEFAULT_TARGETS: missing required value
+Call Stack \(most recent call first\):
+  CMakeLists\.txt:3 \(include\)
+
+
+CMake Error at BadArgs3\.cmake:[0-9]+ \(export\):
+  export PACKAGE_INFO given invalid argument:
+
+    DEFAULT_CONFIGURATIONS: missing required value
+Call Stack \(most recent call first\):
+  CMakeLists\.txt:3 \(include\)
+
+
+CMake Error at BadArgs3\.cmake:[0-9]+ \(export\):
+  export PACKAGE_INFO given invalid argument:
+
+    PROJECT: missing required value
+Call Stack \(most recent call first\):
+  CMakeLists\.txt:3 \(include\)
+
+
+CMake Error at BadArgs3\.cmake:[0-9]+ \(export\):
+  export PACKAGE_INFO given invalid arguments:
+
+    DEFAULT_LICENSE: empty string not allowed
+    LICENSE: empty string not allowed
 Call Stack \(most recent call first\):
   CMakeLists\.txt:3 \(include\)

+ 13 - 2
Tests/RunCMake/ExportPackageInfo/BadArgs3.cmake

@@ -1,4 +1,15 @@
 add_library(foo INTERFACE)
 install(TARGETS foo EXPORT foo DESTINATION .)
-export(EXPORT foo PACKAGE_INFO foo FILE foo.cps)
-export(EXPORT foo PACKAGE_INFO foo NAMESPACE foo::)
+set(args PACKAGE_INFO foo EXPORT foo)
+export(${args} APPENDIX)
+export(${args} VERSION)
+export(${args} COMPAT_VERSION)
+export(${args} VERSION_SCHEMA)
+export(${args} LICENSE)
+export(${args} DEFAULT_LICENSE)
+export(${args} DESCRIPTION)
+export(${args} HOMEPAGE_URL)
+export(${args} DEFAULT_TARGETS)
+export(${args} DEFAULT_CONFIGURATIONS)
+export(${args} PROJECT)
+export(${args} LICENSE "" DEFAULT_LICENSE "")

+ 0 - 1
Tests/RunCMake/ExportPackageInfo/BadArgs4-result.txt

@@ -1 +0,0 @@
-1

+ 0 - 64
Tests/RunCMake/ExportPackageInfo/BadArgs4-stderr.txt

@@ -1,64 +0,0 @@
-CMake Error at BadArgs4\.cmake:[0-9]+ \(export\):
-  export EXPORT given unknown argument: "LOWER_CASE_FILE"\.
-Call Stack \(most recent call first\):
-  CMakeLists\.txt:3 \(include\)
-
-
-CMake Error at BadArgs4\.cmake:[0-9]+ \(export\):
-  export EXPORT given unknown argument: "APPENDIX"\.
-Call Stack \(most recent call first\):
-  CMakeLists\.txt:3 \(include\)
-
-
-CMake Error at BadArgs4\.cmake:[0-9]+ \(export\):
-  export EXPORT given unknown argument: "VERSION"\.
-Call Stack \(most recent call first\):
-  CMakeLists\.txt:3 \(include\)
-
-
-CMake Error at BadArgs4\.cmake:[0-9]+ \(export\):
-  export EXPORT given unknown argument: "LICENSE"\.
-Call Stack \(most recent call first\):
-  CMakeLists\.txt:3 \(include\)
-
-
-CMake Error at BadArgs4\.cmake:[0-9]+ \(export\):
-  export EXPORT given unknown argument: "DEFAULT_LICENSE"\.
-Call Stack \(most recent call first\):
-  CMakeLists\.txt:3 \(include\)
-
-
-CMake Error at BadArgs4\.cmake:[0-9]+ \(export\):
-  export EXPORT given unknown argument: "DESCRIPTION"\.
-Call Stack \(most recent call first\):
-  CMakeLists\.txt:3 \(include\)
-
-
-CMake Error at BadArgs4\.cmake:[0-9]+ \(export\):
-  export EXPORT given unknown argument: "HOMEPAGE_URL"\.
-Call Stack \(most recent call first\):
-  CMakeLists\.txt:3 \(include\)
-
-
-CMake Error at BadArgs4\.cmake:[0-9]+ \(export\):
-  export EXPORT given unknown argument: "DEFAULT_TARGETS"\.
-Call Stack \(most recent call first\):
-  CMakeLists\.txt:3 \(include\)
-
-
-CMake Error at BadArgs4\.cmake:[0-9]+ \(export\):
-  export EXPORT given unknown argument: "DEFAULT_CONFIGURATIONS"\.
-Call Stack \(most recent call first\):
-  CMakeLists\.txt:3 \(include\)
-
-
-CMake Error at BadArgs4\.cmake:[0-9]+ \(export\):
-  export EXPORT given unknown argument: "PROJECT"\.
-Call Stack \(most recent call first\):
-  CMakeLists\.txt:3 \(include\)
-
-
-CMake Error at BadArgs4\.cmake:[0-9]+ \(export\):
-  export EXPORT given unknown argument: "NO_PROJECT_METADATA"\.
-Call Stack \(most recent call first\):
-  CMakeLists\.txt:3 \(include\)

+ 0 - 14
Tests/RunCMake/ExportPackageInfo/BadArgs4.cmake

@@ -1,14 +0,0 @@
-add_library(foo INTERFACE)
-install(TARGETS foo EXPORT foo DESTINATION .)
-set(args EXPORT foo)
-export(${args} LOWER_CASE_FILE)
-export(${args} APPENDIX test)
-export(${args} VERSION 1.0)
-export(${args} LICENSE "BSD-3-Clause AND CC-BY-SA-4.0")
-export(${args} DEFAULT_LICENSE "BSD-3-Clause")
-export(${args} DESCRIPTION "Test")
-export(${args} HOMEPAGE_URL "example.com")
-export(${args} DEFAULT_TARGETS foo)
-export(${args} DEFAULT_CONFIGURATIONS Release)
-export(${args} PROJECT foo)
-export(${args} NO_PROJECT_METADATA)

+ 0 - 1
Tests/RunCMake/ExportPackageInfo/BadArgs5-result.txt

@@ -1 +0,0 @@
-1

+ 0 - 95
Tests/RunCMake/ExportPackageInfo/BadArgs5-stderr.txt

@@ -1,95 +0,0 @@
-CMake Error at BadArgs5\.cmake:[0-9]+ \(export\):
-  export EXPORT given invalid argument:
-
-    APPENDIX: missing required value
-Call Stack \(most recent call first\):
-  CMakeLists\.txt:3 \(include\)
-
-
-CMake Error at BadArgs5\.cmake:[0-9]+ \(export\):
-  export EXPORT given invalid argument:
-
-    VERSION: missing required value
-Call Stack \(most recent call first\):
-  CMakeLists\.txt:3 \(include\)
-
-
-CMake Error at BadArgs5\.cmake:[0-9]+ \(export\):
-  export EXPORT given invalid argument:
-
-    COMPAT_VERSION: missing required value
-Call Stack \(most recent call first\):
-  CMakeLists\.txt:3 \(include\)
-
-
-CMake Error at BadArgs5\.cmake:[0-9]+ \(export\):
-  export EXPORT given invalid argument:
-
-    VERSION_SCHEMA: missing required value
-Call Stack \(most recent call first\):
-  CMakeLists\.txt:3 \(include\)
-
-
-CMake Error at BadArgs5\.cmake:[0-9]+ \(export\):
-  export EXPORT given invalid argument:
-
-    LICENSE: missing required value
-Call Stack \(most recent call first\):
-  CMakeLists\.txt:3 \(include\)
-
-
-CMake Error at BadArgs5\.cmake:[0-9]+ \(export\):
-  export EXPORT given invalid argument:
-
-    DEFAULT_LICENSE: missing required value
-Call Stack \(most recent call first\):
-  CMakeLists\.txt:3 \(include\)
-
-
-CMake Error at BadArgs5\.cmake:[0-9]+ \(export\):
-  export EXPORT given invalid argument:
-
-    DESCRIPTION: missing required value
-Call Stack \(most recent call first\):
-  CMakeLists\.txt:3 \(include\)
-
-
-CMake Error at BadArgs5\.cmake:[0-9]+ \(export\):
-  export EXPORT given invalid argument:
-
-    HOMEPAGE_URL: missing required value
-Call Stack \(most recent call first\):
-  CMakeLists\.txt:3 \(include\)
-
-
-CMake Error at BadArgs5\.cmake:[0-9]+ \(export\):
-  export EXPORT given invalid argument:
-
-    DEFAULT_TARGETS: missing required value
-Call Stack \(most recent call first\):
-  CMakeLists\.txt:3 \(include\)
-
-
-CMake Error at BadArgs5\.cmake:[0-9]+ \(export\):
-  export EXPORT given invalid argument:
-
-    DEFAULT_CONFIGURATIONS: missing required value
-Call Stack \(most recent call first\):
-  CMakeLists\.txt:3 \(include\)
-
-
-CMake Error at BadArgs5\.cmake:[0-9]+ \(export\):
-  export EXPORT given invalid argument:
-
-    PROJECT: missing required value
-Call Stack \(most recent call first\):
-  CMakeLists\.txt:3 \(include\)
-
-
-CMake Error at BadArgs5\.cmake:[0-9]+ \(export\):
-  export EXPORT given invalid arguments:
-
-    DEFAULT_LICENSE: empty string not allowed
-    LICENSE: empty string not allowed
-Call Stack \(most recent call first\):
-  CMakeLists\.txt:3 \(include\)

+ 0 - 15
Tests/RunCMake/ExportPackageInfo/BadArgs5.cmake

@@ -1,15 +0,0 @@
-add_library(foo INTERFACE)
-install(TARGETS foo EXPORT foo DESTINATION .)
-set(args EXPORT foo PACKAGE_INFO foo)
-export(${args} APPENDIX)
-export(${args} VERSION)
-export(${args} COMPAT_VERSION)
-export(${args} VERSION_SCHEMA)
-export(${args} LICENSE)
-export(${args} DEFAULT_LICENSE)
-export(${args} DESCRIPTION)
-export(${args} HOMEPAGE_URL)
-export(${args} DEFAULT_TARGETS)
-export(${args} DEFAULT_CONFIGURATIONS)
-export(${args} PROJECT)
-export(${args} LICENSE "" DEFAULT_LICENSE "")

+ 1 - 1
Tests/RunCMake/ExportPackageInfo/BadDefaultTarget.cmake

@@ -2,4 +2,4 @@ add_library(foo INTERFACE)
 add_library(dog INTERFACE)
 install(TARGETS foo EXPORT foo DESTINATION .)
 install(TARGETS dog EXPORT dog DESTINATION .)
-export(EXPORT foo PACKAGE_INFO test DEFAULT_TARGETS dog cat)
+export(PACKAGE_INFO test EXPORT foo DEFAULT_TARGETS dog cat)

+ 1 - 1
Tests/RunCMake/ExportPackageInfo/BadName.cmake

@@ -1,3 +1,3 @@
 add_library(foo INTERFACE)
 install(TARGETS foo EXPORT foo DESTINATION .)
-export(EXPORT foo PACKAGE_INFO "%foo")
+export(PACKAGE_INFO "%foo" EXPORT foo)

+ 2 - 2
Tests/RunCMake/ExportPackageInfo/CompileOnly.cmake

@@ -7,7 +7,7 @@ add_library(bar foo.cxx)
 target_link_libraries(bar $<COMPILE_ONLY:linkOnlyOne> $<COMPILE_ONLY:linkOnlyTwo> foo)
 
 install(TARGETS foo linkOnlyOne linkOnlyTwo EXPORT foo)
-export(EXPORT foo PACKAGE_INFO foo)
+export(PACKAGE_INFO foo EXPORT foo)
 
 install(TARGETS bar EXPORT bar)
-export(EXPORT bar PACKAGE_INFO bar)
+export(PACKAGE_INFO bar EXPORT bar)

+ 2 - 2
Tests/RunCMake/ExportPackageInfo/CompileOnlyRecursive.cmake

@@ -5,7 +5,7 @@ add_library(bar foo.cxx)
 target_link_libraries(bar $<COMPILE_ONLY:$<COMPILE_ONLY:foo>>)
 
 install(TARGETS foo EXPORT foo)
-export(EXPORT foo PACKAGE_INFO foo)
+export(PACKAGE_INFO foo EXPORT foo)
 
 install(TARGETS bar EXPORT bar)
-export(EXPORT bar PACKAGE_INFO bar)
+export(PACKAGE_INFO bar EXPORT bar)

+ 1 - 1
Tests/RunCMake/ExportPackageInfo/Config.cmake

@@ -10,4 +10,4 @@ endif()
 add_library(foo foo.cxx)
 
 install(TARGETS foo EXPORT foo)
-export(EXPORT foo PACKAGE_INFO foo)
+export(PACKAGE_INFO foo EXPORT foo)

+ 1 - 1
Tests/RunCMake/ExportPackageInfo/DependencyVersionCMake.cmake

@@ -8,4 +8,4 @@ add_library(foo INTERFACE)
 target_link_libraries(foo INTERFACE bar::bar)
 
 install(TARGETS foo EXPORT foo DESTINATION .)
-export(EXPORT foo PACKAGE_INFO foo)
+export(PACKAGE_INFO foo EXPORT foo)

+ 1 - 1
Tests/RunCMake/ExportPackageInfo/DependencyVersionCps.cmake

@@ -8,4 +8,4 @@ add_library(foo INTERFACE)
 target_link_libraries(foo INTERFACE baz::baz)
 
 install(TARGETS foo EXPORT foo DESTINATION .)
-export(EXPORT foo PACKAGE_INFO foo)
+export(PACKAGE_INFO foo EXPORT foo)

+ 2 - 2
Tests/RunCMake/ExportPackageInfo/DependsMultipleCommon.cmake

@@ -4,8 +4,8 @@ target_link_libraries(bar foo)
 
 install(TARGETS foo EXPORT foo)
 export(EXPORT foo NAMESPACE "${NAMESPACE}")
-export(EXPORT foo PACKAGE_INFO foo)
+export(PACKAGE_INFO foo EXPORT foo)
 
 install(TARGETS bar EXPORT bar)
 export(EXPORT bar)
-export(EXPORT bar PACKAGE_INFO bar)
+export(PACKAGE_INFO bar EXPORT bar)

+ 2 - 2
Tests/RunCMake/ExportPackageInfo/DuplicateOutput.cmake

@@ -1,4 +1,4 @@
 add_library(foo INTERFACE)
 install(TARGETS foo EXPORT foo DESTINATION .)
-export(EXPORT foo PACKAGE_INFO foo)
-export(EXPORT foo PACKAGE_INFO foo)
+export(PACKAGE_INFO foo EXPORT foo)
+export(PACKAGE_INFO foo EXPORT foo)

+ 1 - 1
Tests/RunCMake/ExportPackageInfo/EmptyConfig.cmake

@@ -6,4 +6,4 @@ set(CMAKE_CONFIGURATION_TYPES "" CACHE STRING "" FORCE)
 add_library(foo foo.cxx)
 
 install(TARGETS foo EXPORT foo)
-export(EXPORT foo PACKAGE_INFO foo)
+export(PACKAGE_INFO foo EXPORT foo)

+ 1 - 1
Tests/RunCMake/ExportPackageInfo/ExperimentalGate-stderr.txt

@@ -1,2 +1,2 @@
 CMake Error at ExperimentalGate\.cmake:5 \(export\):
-  export EXPORT given unknown argument: "PACKAGE_INFO"\.
+  export does not recognize sub-command PACKAGE_INFO

+ 1 - 1
Tests/RunCMake/ExportPackageInfo/ExperimentalGate.cmake

@@ -2,4 +2,4 @@ unset(CMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO)
 
 add_library(foo INTERFACE)
 install(TARGETS foo EXPORT foo DESTINATION .)
-export(EXPORT foo PACKAGE_INFO foo)
+export(PACKAGE_INFO foo EXPORT foo)

+ 2 - 2
Tests/RunCMake/ExportPackageInfo/ExperimentalWarning.cmake

@@ -1,8 +1,8 @@
 set(
   CMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO
-  "b80be207-778e-46ba-8080-b23bba22639e"
+  "7fa7d13b-8308-4dc7-af39-9e450456d68f"
   )
 
 add_library(foo INTERFACE)
 install(TARGETS foo EXPORT foo DESTINATION .)
-export(EXPORT foo PACKAGE_INFO foo)
+export(PACKAGE_INFO foo EXPORT foo)

+ 1 - 1
Tests/RunCMake/ExportPackageInfo/ExportSymbolicComponent.cmake

@@ -1,4 +1,4 @@
 add_library(foo INTERFACE SYMBOLIC)
 
 install(TARGETS foo EXPORT foo DESTINATION .)
-export(EXPORT foo PACKAGE_INFO foo)
+export(PACKAGE_INFO foo EXPORT foo)

+ 1 - 1
Tests/RunCMake/ExportPackageInfo/FileSetHeaders.cmake

@@ -26,4 +26,4 @@ install(
   FILE_SET genex
     DESTINATION $<$<CONFIG:FAKE_CONFIG>:FAKE_DEST>genex
 )
-export(EXPORT foo PACKAGE_INFO foo)
+export(PACKAGE_INFO foo EXPORT foo)

+ 1 - 1
Tests/RunCMake/ExportPackageInfo/InterfaceProperties.cmake

@@ -13,4 +13,4 @@ target_link_libraries(foo INTERFACE /usr/lib/libm.so)
 set_property(TARGET foo PROPERTY SPDX_LICENSE "BSD-3-Clause")
 
 install(TARGETS foo EXPORT foo DESTINATION .)
-export(EXPORT foo PACKAGE_INFO foo)
+export(PACKAGE_INFO foo EXPORT foo)

+ 2 - 2
Tests/RunCMake/ExportPackageInfo/LinkInterfaceGeneratorExpression.cmake

@@ -5,7 +5,7 @@ add_library(bar foo.cxx)
 target_link_libraries(bar $<1:foo> $<1:$<CONFIG>>)
 
 install(TARGETS foo EXPORT foo)
-export(EXPORT foo PACKAGE_INFO foo)
+export(PACKAGE_INFO foo EXPORT foo)
 
 install(TARGETS bar EXPORT bar)
-export(EXPORT bar PACKAGE_INFO bar)
+export(PACKAGE_INFO bar EXPORT bar)

+ 2 - 2
Tests/RunCMake/ExportPackageInfo/LinkOnly.cmake

@@ -7,7 +7,7 @@ add_library(bar foo.cxx)
 target_link_libraries(bar $<LINK_ONLY:linkOnlyOne> $<LINK_ONLY:linkOnlyTwo> foo)
 
 install(TARGETS foo linkOnlyOne linkOnlyTwo EXPORT foo)
-export(EXPORT foo PACKAGE_INFO foo)
+export(PACKAGE_INFO foo EXPORT foo)
 
 install(TARGETS bar EXPORT bar)
-export(EXPORT bar PACKAGE_INFO bar)
+export(PACKAGE_INFO bar EXPORT bar)

+ 2 - 2
Tests/RunCMake/ExportPackageInfo/LinkOnlyRecursive.cmake

@@ -5,7 +5,7 @@ add_library(bar foo.cxx)
 target_link_libraries(bar $<LINK_ONLY:$<LINK_ONLY:foo>>)
 
 install(TARGETS foo EXPORT foo)
-export(EXPORT foo PACKAGE_INFO foo)
+export(PACKAGE_INFO foo EXPORT foo)
 
 install(TARGETS bar EXPORT bar)
-export(EXPORT bar PACKAGE_INFO bar)
+export(PACKAGE_INFO bar EXPORT bar)

+ 2 - 2
Tests/RunCMake/ExportPackageInfo/LowerCaseFile.cmake

@@ -1,4 +1,4 @@
 add_library(foo INTERFACE)
 install(TARGETS foo EXPORT foo DESTINATION .)
-export(EXPORT foo PACKAGE_INFO LowerCase LOWER_CASE_FILE)
-export(EXPORT foo PACKAGE_INFO PreserveCase)
+export(PACKAGE_INFO LowerCase EXPORT foo LOWER_CASE_FILE)
+export(PACKAGE_INFO PreserveCase EXPORT foo)

+ 1 - 1
Tests/RunCMake/ExportPackageInfo/Metadata.cmake

@@ -1,8 +1,8 @@
 add_library(foo INTERFACE)
 install(TARGETS foo EXPORT foo DESTINATION .)
 export(
-  EXPORT foo
   PACKAGE_INFO foo
+  EXPORT foo
   VERSION 1.2.3
   VERSION_SCHEMA simple
   COMPAT_VERSION 1.2.0

+ 1 - 1
Tests/RunCMake/ExportPackageInfo/Minimal.cmake

@@ -1,3 +1,3 @@
 add_library(foo INTERFACE)
 install(TARGETS foo EXPORT foo DESTINATION .)
-export(EXPORT foo PACKAGE_INFO foo)
+export(PACKAGE_INFO foo EXPORT foo)

+ 6 - 3
Tests/RunCMake/ExportPackageInfo/MinimalVersion.cmake

@@ -1,16 +1,19 @@
 add_library(foo INTERFACE)
 install(TARGETS foo EXPORT foo DESTINATION .)
 
-export(EXPORT foo
+export(
   PACKAGE_INFO foo1
+  EXPORT foo
   VERSION 1.0)
 
-export(EXPORT foo
+export(
   PACKAGE_INFO foo2
+  EXPORT foo
   VERSION 1.5
   COMPAT_VERSION 1.0)
 
-export(EXPORT foo
+export(
   PACKAGE_INFO foo3
+  EXPORT foo
   VERSION 1.0
   VERSION_SCHEMA simple)

+ 1 - 1
Tests/RunCMake/ExportPackageInfo/NoProjectMetadata.cmake

@@ -9,7 +9,7 @@ add_library(foo INTERFACE)
 install(TARGETS foo EXPORT foo DESTINATION .)
 
 export(
-  EXPORT foo
   PACKAGE_INFO foo
+  EXPORT foo
   NO_PROJECT_METADATA
   )

+ 4 - 3
Tests/RunCMake/ExportPackageInfo/ProjectMetadata.cmake

@@ -11,20 +11,21 @@ install(TARGETS foo EXPORT foo DESTINATION .)
 
 # Test inheriting from project matching package name.
 export(
-  EXPORT foo
   PACKAGE_INFO foo
+  EXPORT foo
   )
 
 # Test inheriting from a specified project.
 export(
+  PACKAGE_INFO test1
   EXPORT foo
-  PACKAGE_INFO test1 PROJECT foo
+  PROJECT foo
   )
 
 # Test that inheriting doesn't override explicitly specified metadata.
 export(
-  EXPORT foo
   PACKAGE_INFO test2
+  EXPORT foo
   PROJECT foo
   VERSION 1.4.7
   LICENSE "Apache-2.0"

+ 1 - 1
Tests/RunCMake/ExportPackageInfo/ReferencesNonExportedTarget.cmake

@@ -3,4 +3,4 @@ add_library(canine INTERFACE)
 target_link_libraries(canine INTERFACE mammal)
 
 install(TARGETS canine EXPORT dog DESTINATION .)
-export(EXPORT dog PACKAGE_INFO dog)
+export(PACKAGE_INFO dog EXPORT dog)

+ 1 - 1
Tests/RunCMake/ExportPackageInfo/ReferencesWronglyExportedTarget.cmake

@@ -11,4 +11,4 @@ export(EXPORT foo)
 export(EXPORT bar NAMESPACE bar_)
 
 install(TARGETS test EXPORT test DESTINATION .)
-export(EXPORT test PACKAGE_INFO test)
+export(PACKAGE_INFO test EXPORT test)

+ 1 - 1
Tests/RunCMake/ExportPackageInfo/ReferencesWronglyImportedTarget.cmake

@@ -4,4 +4,4 @@ add_library(foo INTERFACE)
 target_link_libraries(foo INTERFACE bar)
 
 install(TARGETS foo EXPORT foo DESTINATION .)
-export(EXPORT foo PACKAGE_INFO foo)
+export(PACKAGE_INFO foo EXPORT foo)

+ 1 - 1
Tests/RunCMake/ExportPackageInfo/ReferencesWronglyNamespacedTarget.cmake

@@ -8,4 +8,4 @@ add_library(foo INTERFACE)
 target_link_libraries(foo INTERFACE wrong::lib)
 
 install(TARGETS foo EXPORT foo DESTINATION .)
-export(EXPORT foo PACKAGE_INFO foo)
+export(PACKAGE_INFO foo EXPORT foo)

+ 2 - 2
Tests/RunCMake/ExportPackageInfo/Requirements.cmake

@@ -14,7 +14,7 @@ add_library(bar ALIAS libc)
 target_link_libraries(libd INTERFACE test::liba foo bar)
 
 install(TARGETS libb EXPORT foo DESTINATION .)
-export(EXPORT foo PACKAGE_INFO foo)
+export(PACKAGE_INFO foo EXPORT foo)
 
 install(TARGETS libc libd EXPORT bar DESTINATION .)
-export(EXPORT bar PACKAGE_INFO bar)
+export(PACKAGE_INFO bar EXPORT bar)

+ 1 - 3
Tests/RunCMake/ExportPackageInfo/RunCMakeTest.cmake

@@ -11,7 +11,7 @@ run_cmake(VersionCheckWarning)
 # Enable experimental feature and suppress warnings
 set(RunCMake_TEST_OPTIONS
   -Wno-dev
-  "-DCMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO:STRING=b80be207-778e-46ba-8080-b23bba22639e"
+  "-DCMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO:STRING=7fa7d13b-8308-4dc7-af39-9e450456d68f"
   "-DCMAKE_EXPERIMENTAL_FIND_CPS_PACKAGES:STRING=e82e467b-f997-4464-8ace-b00808fff261"
   )
 
@@ -20,8 +20,6 @@ run_cmake(BadArgs0)
 run_cmake(BadArgs1)
 run_cmake(BadArgs2)
 run_cmake(BadArgs3)
-run_cmake(BadArgs4)
-run_cmake(BadArgs5)
 run_cmake(BadName)
 run_cmake(DuplicateOutput)
 run_cmake(BadDefaultTarget)

+ 1 - 1
Tests/RunCMake/ExportPackageInfo/TargetTypes.cmake

@@ -17,4 +17,4 @@ install(
   DESTINATION .
   )
 
-export(EXPORT foo PACKAGE_INFO foo)
+export(PACKAGE_INFO foo EXPORT foo)

+ 1 - 1
Tests/RunCMake/ExportPackageInfo/TransitiveSymbolicComponent.cmake

@@ -11,4 +11,4 @@ find_package(Symbolic REQUIRED CONFIG
 target_link_libraries(bar INTERFACE Symbolic::test)
 
 install(TARGETS bar EXPORT bar DESTINATION .)
-export(EXPORT bar PACKAGE_INFO bar)
+export(PACKAGE_INFO bar EXPORT bar)

+ 7 - 7
Tests/RunCMake/ExportPackageInfo/VersionCheck.cmake

@@ -2,37 +2,37 @@ add_library(foo INTERFACE)
 install(TARGETS foo EXPORT foo DESTINATION .)
 
 # Try exporting a 'properly' simple version.
-export(EXPORT foo PACKAGE_INFO foo1 VERSION 1.2.3)
+export(PACKAGE_INFO foo1 EXPORT foo VERSION 1.2.3)
 
 # Try exporting a version with many components.
-export(EXPORT foo PACKAGE_INFO foo2 VERSION 1.21.23.33.37.42.9.0.12)
+export(PACKAGE_INFO foo2 EXPORT foo VERSION 1.21.23.33.37.42.9.0.12)
 
 # Try exporting a version with a label.
-export(EXPORT foo PACKAGE_INFO foo3 VERSION "1.2.3+git1234abcd")
+export(PACKAGE_INFO foo3 EXPORT foo VERSION "1.2.3+git1234abcd")
 
 # Try exporting a version with a different label.
-export(EXPORT foo PACKAGE_INFO foo4 VERSION "1.2.3-0.example")
+export(PACKAGE_INFO foo4 EXPORT foo VERSION "1.2.3-0.example")
 
 # Try exporting with the schema explicitly specified.
 export(
-  EXPORT foo
   PACKAGE_INFO foo5
+  EXPORT foo
   VERSION "1.2.3-0.example"
   VERSION_SCHEMA "simple"
 )
 
 # Try exporting with a custom-schema version.
 export(
-  EXPORT foo
   PACKAGE_INFO foo6
+  EXPORT foo
   VERSION "foo!test"
   VERSION_SCHEMA "custom"
 )
 
 # Try exporting with a recognized but not-checked schema.
 export(
-  EXPORT foo
   PACKAGE_INFO foo7
+  EXPORT foo
   VERSION "invalid"
   VERSION_SCHEMA "pep440"
 )

+ 1 - 1
Tests/RunCMake/ExportPackageInfo/VersionCheckError.cmake

@@ -2,4 +2,4 @@ add_library(foo INTERFACE)
 install(TARGETS foo EXPORT foo DESTINATION .)
 
 # Try exporting a non-conforming version.
-export(EXPORT foo PACKAGE_INFO foo VERSION "1.2.3rc1")
+export(PACKAGE_INFO foo EXPORT foo VERSION "1.2.3rc1")

+ 2 - 2
Tests/RunCMake/ExportPackageInfo/VersionCheckWarning.cmake

@@ -1,6 +1,6 @@
 set(
   CMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO
-  "b80be207-778e-46ba-8080-b23bba22639e"
+  "7fa7d13b-8308-4dc7-af39-9e450456d68f"
 )
 
 add_library(foo INTERFACE)
@@ -8,8 +8,8 @@ install(TARGETS foo EXPORT foo DESTINATION .)
 
 # Try exporting with an unrecognized schema.
 export(
-  EXPORT foo
   PACKAGE_INFO foo
+  EXPORT foo
   VERSION "irrelevant"
   VERSION_SCHEMA "unrecognized"
 )

+ 1 - 1
Tests/RunCMake/ExportSbom/ApplicationTarget.cmake

@@ -1,7 +1,7 @@
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/ApplicationTarget.cmake)
 
 export(
-  EXPORT application_targets
   SBOM application_targets
+  EXPORT application_targets
   FORMAT "spdx-3.0+json"
 )

+ 1 - 1
Tests/RunCMake/ExportSbom/InterfaceTarget.cmake

@@ -1,6 +1,6 @@
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/InterfaceTarget.cmake)
 
 export(
-  EXPORT interface_targets
   SBOM interface_targets
+  EXPORT interface_targets
 )

+ 1 - 1
Tests/RunCMake/ExportSbom/MissingPackageNamespace.cmake

@@ -1,7 +1,7 @@
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/MissingPackageNamespace.cmake)
 
 export(
-  EXPORT test_targets
   SBOM interface_targets
+  EXPORT test_targets
   VERSION 1.0.2
 )

+ 1 - 1
Tests/RunCMake/ExportSbom/ProjectMetadata.cmake

@@ -1,8 +1,8 @@
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/ProjectMetadata.cmake)
 
 export(
-  EXPORT test_targets
   SBOM test_targets
+  EXPORT test_targets
   DESCRIPTION "An eloquent description"
   LICENSE "BSD-3"
   HOMEPAGE_URL "www.example.com"

+ 1 - 1
Tests/RunCMake/ExportSbom/ReferencesNonExportedTarget.cmake

@@ -1,3 +1,3 @@
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/ReferencesNonExportedTarget.cmake)
 
-export(EXPORT dog SBOM dog)
+export(SBOM dog EXPORT dog)

+ 2 - 2
Tests/RunCMake/ExportSbom/Requirements.cmake

@@ -1,4 +1,4 @@
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/Requirements.cmake)
 
-export(EXPORT foo SBOM foo)
-export(EXPORT bar SBOM bar)
+export(SBOM foo EXPORT foo)
+export(SBOM bar EXPORT bar)

+ 1 - 1
Tests/RunCMake/ExportSbom/RunCMakeTest.cmake

@@ -4,7 +4,7 @@ set(common_test_options
   -Wno-dev
   "-DCMAKE_EXPERIMENTAL_GENERATE_SBOM:STRING=ca494ed3-b261-4205-a01f-603c95e4cae0"
   "-DCMAKE_EXPERIMENTAL_FIND_CPS_PACKAGES:STRING=e82e467b-f997-4464-8ace-b00808fff261"
-  "-DCMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO:STRING=b80be207-778e-46ba-8080-b23bba22639e"
+  "-DCMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO:STRING=7fa7d13b-8308-4dc7-af39-9e450456d68f"
 )
 
 function(run_cmake_install test)

+ 1 - 1
Tests/RunCMake/ExportSbom/SharedTarget.cmake

@@ -1,6 +1,6 @@
 include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/SharedTarget.cmake)
 
 export(
-  EXPORT shared_targets
   SBOM shared_targets
+  EXPORT shared_targets
 )

+ 1 - 1
Tests/RunCMake/InstallExportsAsPackageInfo/ExperimentalWarning.cmake

@@ -1,6 +1,6 @@
 set(
   CMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO
-  "b80be207-778e-46ba-8080-b23bba22639e"
+  "7fa7d13b-8308-4dc7-af39-9e450456d68f"
   )
 set(
   CMAKE_EXPERIMENTAL_MAPPED_PACKAGE_INFO

+ 1 - 1
Tests/RunCMake/InstallExportsAsPackageInfo/RunCMakeTest.cmake

@@ -7,7 +7,7 @@ run_cmake(ExperimentalWarning)
 # Enable experimental feature and suppress warnings
 set(RunCMake_TEST_OPTIONS
   -Wno-dev
-  "-DCMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO:STRING=b80be207-778e-46ba-8080-b23bba22639e"
+  "-DCMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO:STRING=7fa7d13b-8308-4dc7-af39-9e450456d68f"
   "-DCMAKE_EXPERIMENTAL_MAPPED_PACKAGE_INFO:STRING=ababa1b5-7099-495f-a9cd-e22d38f274f2"
   )
 

+ 1 - 1
Tests/RunCMake/InstallPackageInfo/ExperimentalWarning.cmake

@@ -1,6 +1,6 @@
 set(
   CMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO
-  "b80be207-778e-46ba-8080-b23bba22639e"
+  "7fa7d13b-8308-4dc7-af39-9e450456d68f"
   )
 
 add_library(foo INTERFACE)

+ 1 - 1
Tests/RunCMake/InstallPackageInfo/RunCMakeTest.cmake

@@ -11,7 +11,7 @@ run_cmake(VersionCheckWarning)
 # Enable experimental feature and suppress warnings
 set(RunCMake_TEST_OPTIONS
   -Wno-dev
-  "-DCMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO:STRING=b80be207-778e-46ba-8080-b23bba22639e"
+  "-DCMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO:STRING=7fa7d13b-8308-4dc7-af39-9e450456d68f"
   "-DCMAKE_EXPERIMENTAL_FIND_CPS_PACKAGES:STRING=e82e467b-f997-4464-8ace-b00808fff261"
   )
 

+ 1 - 1
Tests/RunCMake/InstallPackageInfo/VersionCheckWarning.cmake

@@ -1,6 +1,6 @@
 set(
   CMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO
-  "b80be207-778e-46ba-8080-b23bba22639e"
+  "7fa7d13b-8308-4dc7-af39-9e450456d68f"
 )
 
 add_library(foo INTERFACE)

+ 1 - 1
Tests/RunCMake/InstallSbom/RunCMakeTest.cmake

@@ -4,7 +4,7 @@ set(common_test_options
   -Wno-dev
   "-DCMAKE_EXPERIMENTAL_GENERATE_SBOM:STRING=ca494ed3-b261-4205-a01f-603c95e4cae0"
   "-DCMAKE_EXPERIMENTAL_FIND_CPS_PACKAGES:STRING=e82e467b-f997-4464-8ace-b00808fff261"
-  "-DCMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO:STRING=b80be207-778e-46ba-8080-b23bba22639e"
+  "-DCMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO:STRING=7fa7d13b-8308-4dc7-af39-9e450456d68f"
 )
 
 function(run_cmake_install test)

+ 1 - 1
Tests/RunCMake/project/KeywordProjectName.cmake

@@ -3,7 +3,7 @@ project(VERSION)
 project(DESCRIPTION)
 project(HOMEPAGE_URL)
 
-# CMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO=b80be207-778e-46ba-8080-b23bba22639e
+# CMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO=7fa7d13b-8308-4dc7-af39-9e450456d68f
 # Enable these when Package Info is no longer experimental
 # project(COMPAT_VERSION)
 # project(SPDX_LICENSE)

+ 1 - 1
Tests/RunCMake/project/RunCMakeTest.cmake

@@ -58,7 +58,7 @@ run_cmake(VersionTwice)
 run_cmake(VersionMax)
 
 set(opts
-  "-DCMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO=b80be207-778e-46ba-8080-b23bba22639e"
+  "-DCMAKE_EXPERIMENTAL_EXPORT_PACKAGE_INFO=7fa7d13b-8308-4dc7-af39-9e450456d68f"
   "-Wno-dev"
 )