Просмотр исходного кода

export: Make PACKAGE_INFO, SBOM sub-commands

Change the interface of the `export` command so that `PACKAGE_INFO` and
`SBOM` are proper, first-level sub-commands, rather than being implemented via
`export(EXPORT ... (PACKAGE_INFO|SBOM) ...)`. This brings consistency with the
`install` command and also simplifies argument parsing.

Update the documentation and test cases accordingly. Some of the
argument handling test cases are now rather gratuitous, and are removed,
which also improves consistency with the `install` tests.
Matthew Woehlke 1 месяц назад
Родитель
Сommit
254916dfc6
59 измененных файлов с 356 добавлено и 387 удалено
  1. 18 11
      Help/command/export.rst
  2. 133 105
      Source/cmExportCommand.cxx
  3. 2 2
      Tests/RunCMake/CpsExportImportBuild/TestLibrary.cmake
  4. 2 2
      Tests/RunCMake/ExportPackageInfo/Appendix.cmake
  5. 23 1
      Tests/RunCMake/ExportPackageInfo/BadArgs0-stderr.txt
  6. 5 1
      Tests/RunCMake/ExportPackageInfo/BadArgs0.cmake
  7. 4 4
      Tests/RunCMake/ExportPackageInfo/BadArgs1.cmake
  8. 1 1
      Tests/RunCMake/ExportPackageInfo/BadArgs2.cmake
  9. 89 4
      Tests/RunCMake/ExportPackageInfo/BadArgs3-stderr.txt
  10. 13 2
      Tests/RunCMake/ExportPackageInfo/BadArgs3.cmake
  11. 0 1
      Tests/RunCMake/ExportPackageInfo/BadArgs4-result.txt
  12. 0 64
      Tests/RunCMake/ExportPackageInfo/BadArgs4-stderr.txt
  13. 0 14
      Tests/RunCMake/ExportPackageInfo/BadArgs4.cmake
  14. 0 1
      Tests/RunCMake/ExportPackageInfo/BadArgs5-result.txt
  15. 0 95
      Tests/RunCMake/ExportPackageInfo/BadArgs5-stderr.txt
  16. 0 15
      Tests/RunCMake/ExportPackageInfo/BadArgs5.cmake
  17. 1 1
      Tests/RunCMake/ExportPackageInfo/BadDefaultTarget.cmake
  18. 1 1
      Tests/RunCMake/ExportPackageInfo/BadName.cmake
  19. 2 2
      Tests/RunCMake/ExportPackageInfo/CompileOnly.cmake
  20. 2 2
      Tests/RunCMake/ExportPackageInfo/CompileOnlyRecursive.cmake
  21. 1 1
      Tests/RunCMake/ExportPackageInfo/Config.cmake
  22. 1 1
      Tests/RunCMake/ExportPackageInfo/DependencyVersionCMake.cmake
  23. 1 1
      Tests/RunCMake/ExportPackageInfo/DependencyVersionCps.cmake
  24. 2 2
      Tests/RunCMake/ExportPackageInfo/DependsMultipleCommon.cmake
  25. 2 2
      Tests/RunCMake/ExportPackageInfo/DuplicateOutput.cmake
  26. 1 1
      Tests/RunCMake/ExportPackageInfo/EmptyConfig.cmake
  27. 1 1
      Tests/RunCMake/ExportPackageInfo/ExperimentalGate-stderr.txt
  28. 1 1
      Tests/RunCMake/ExportPackageInfo/ExperimentalGate.cmake
  29. 1 1
      Tests/RunCMake/ExportPackageInfo/ExperimentalWarning.cmake
  30. 1 1
      Tests/RunCMake/ExportPackageInfo/ExportSymbolicComponent.cmake
  31. 1 1
      Tests/RunCMake/ExportPackageInfo/FileSetHeaders.cmake
  32. 1 1
      Tests/RunCMake/ExportPackageInfo/InterfaceProperties.cmake
  33. 2 2
      Tests/RunCMake/ExportPackageInfo/LinkInterfaceGeneratorExpression.cmake
  34. 2 2
      Tests/RunCMake/ExportPackageInfo/LinkOnly.cmake
  35. 2 2
      Tests/RunCMake/ExportPackageInfo/LinkOnlyRecursive.cmake
  36. 2 2
      Tests/RunCMake/ExportPackageInfo/LowerCaseFile.cmake
  37. 1 1
      Tests/RunCMake/ExportPackageInfo/Metadata.cmake
  38. 1 1
      Tests/RunCMake/ExportPackageInfo/Minimal.cmake
  39. 6 3
      Tests/RunCMake/ExportPackageInfo/MinimalVersion.cmake
  40. 1 1
      Tests/RunCMake/ExportPackageInfo/NoProjectMetadata.cmake
  41. 4 3
      Tests/RunCMake/ExportPackageInfo/ProjectMetadata.cmake
  42. 1 1
      Tests/RunCMake/ExportPackageInfo/ReferencesNonExportedTarget.cmake
  43. 1 1
      Tests/RunCMake/ExportPackageInfo/ReferencesWronglyExportedTarget.cmake
  44. 1 1
      Tests/RunCMake/ExportPackageInfo/ReferencesWronglyImportedTarget.cmake
  45. 1 1
      Tests/RunCMake/ExportPackageInfo/ReferencesWronglyNamespacedTarget.cmake
  46. 2 2
      Tests/RunCMake/ExportPackageInfo/Requirements.cmake
  47. 0 2
      Tests/RunCMake/ExportPackageInfo/RunCMakeTest.cmake
  48. 1 1
      Tests/RunCMake/ExportPackageInfo/TargetTypes.cmake
  49. 1 1
      Tests/RunCMake/ExportPackageInfo/TransitiveSymbolicComponent.cmake
  50. 7 7
      Tests/RunCMake/ExportPackageInfo/VersionCheck.cmake
  51. 1 1
      Tests/RunCMake/ExportPackageInfo/VersionCheckError.cmake
  52. 1 1
      Tests/RunCMake/ExportPackageInfo/VersionCheckWarning.cmake
  53. 1 1
      Tests/RunCMake/ExportSbom/ApplicationTarget.cmake
  54. 1 1
      Tests/RunCMake/ExportSbom/InterfaceTarget.cmake
  55. 1 1
      Tests/RunCMake/ExportSbom/MissingPackageNamespace.cmake
  56. 1 1
      Tests/RunCMake/ExportSbom/ProjectMetadata.cmake
  57. 1 1
      Tests/RunCMake/ExportSbom/ReferencesNonExportedTarget.cmake
  58. 2 2
      Tests/RunCMake/ExportSbom/Requirements.cmake
  59. 1 1
      Tests/RunCMake/ExportSbom/SharedTarget.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::

+ 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);

+ 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)

+ 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)

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

@@ -5,4 +5,4 @@ set(
 
 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)

+ 0 - 2
Tests/RunCMake/ExportPackageInfo/RunCMakeTest.cmake

@@ -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")

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

@@ -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/SharedTarget.cmake

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