Browse Source

Revert "find_package: Reword <package>_NO_INTERFACES documentation"

This reverts commit 179f49560286e2e322b9b0cf5d0a277b7634540f.
Stephen Kelly 12 years ago
parent
commit
71bf96ec78
1 changed files with 18 additions and 17 deletions
  1. 18 17
      Source/cmFindPackageCommand.cxx

+ 18 - 17
Source/cmFindPackageCommand.cxx

@@ -376,25 +376,26 @@ void cmFindPackageCommand::GenerateDocumentation()
     "The package configuration file may set <package>_FOUND to false "
     "to tell find_package that component requirements are not satisfied."
     "\n"
-    "A package configuration file may include() a <package>Targets.cmake "
-    "file, created by install(EXPORT) in the upstream source, to import "
-    "targets into the downstream consumer.  "
-    "When a new version of the upstream adds INTERFACE properties not "
-    "present in a previous version it can change behavior for existing "
-    "downstreams.  "
-    "In order to remain source compatible the upstream package configuration "
-    "file may set <package>_NO_INTERFACES to disable INTERFACE properties.  "
-    "For example, code of the form:\n"
-    "  if(<package>_FIND_VERSION VERSION_LESS <new-version>\n"
-    "      AND NOT <package>_INTERFACES)\n"
-    "    set(<package>_NO_INTERFACES 1)\n"
+    "Targets exported by the install() command may have additional INTERFACE "
+    "properties set for include directories, compile definitions etc.  As "
+    "these may create a backward compatibility concern for consumers of "
+    "existing projects, it is possible to set the <package>_NO_INTERFACES "
+    "variable to disable populating those interfaces.  It is possible to "
+    "emulate a version-based policy for whether the interfaces should be "
+    "enabled in the config file before including the imported targets file. "
+    "This allows consumers to decide when to enable the new interfaces when "
+    "upgrading.  The upstream project is responsible for adding code similar "
+    "to this in the version which generates the INTERFACE content:\n"
+    "  if(${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION VERSION_LESS 2.3\n"
+    "      AND NOT ${CMAKE_FIND_PACKAGE_NAME}_INTERFACES)\n"
+    "    set(${CMAKE_FIND_PACKAGE_NAME}_NO_INTERFACES 1)\n"
     "  endif()\n"
     "  include(\"${CMAKE_CURRENT_LIST_DIR}/<package>Targets.cmake\")\n"
-    "tells <package>Targets.cmake not to provide the INTERFACE properties "
-    "unless the downstream requests at least <new-version> or sets "
-    "<package>_INTERFACES to explicitly request them.  "
-    "This allows consumers to decide when to enable the new interfaces when "
-    "upgrading."
+    "\n"
+    "Downstream users may then choose to use the new interfaces by finding "
+    "the newer version of upstream.  They can also choose to not use the new "
+    "interfaces by setting <package>_INTERFACES to false before finding the "
+    "package.\n"
     "\n"
     "See the cmake_policy() command documentation for discussion of the "
     "NO_POLICY_SCOPE option."