From a5768442636c7fe909e8afc205fd19ac13b9fbc2 Mon Sep 17 00:00:00 2001
From: Brad King <brad.king@kitware.com>
Date: Fri, 20 Feb 2015 08:15:43 -0500
Subject: [PATCH] FindJsonCpp: Drop new module due to upstream jsoncpp
 providing package

Since jsoncpp 0.7.0 (2014-11-20) the upstream may provide a CMake
package configuration file such that find_package(jsoncpp) will find a
jsoncppConfig.cmake file.  In order to avoid conflicting with this
(especially on case-insensitive filesystems), and since we always prefer
projects to provide package config files (that they maintain), it is
better to not provide FindJsonCpp publicly.

Move FindJsonCpp into a private source directory that is not installed
so that we can still use it for building CMake itself.

Reported-by: Ryan Pavlik <ryan.pavlik@gmail.com>
---
 CMakeLists.txt                                | 6 ++----
 Help/manual/cmake-modules.7.rst               | 1 -
 Help/module/FindJsonCpp.rst                   | 1 -
 Help/release/3.2.rst                          | 3 ---
 {Modules => Source/Modules}/FindJsonCpp.cmake | 2 +-
 Tests/FindJsonCpp/Test/CMakeLists.txt         | 3 +++
 6 files changed, 6 insertions(+), 10 deletions(-)
 delete mode 100644 Help/module/FindJsonCpp.rst
 rename {Modules => Source/Modules}/FindJsonCpp.cmake (97%)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index e61621d148..1250a94775 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -382,10 +382,8 @@ macro (CMAKE_BUILD_UTILITIES)
   #---------------------------------------------------------------------
   # Build jsoncpp library.
   if(CMAKE_USE_SYSTEM_JSONCPP)
-    if(EXISTS ${CMAKE_ROOT}/Modules/FindJsonCpp.cmake)
-      find_package(JsonCpp)
-    elseif(NOT CMAKE_VERSION VERSION_LESS 3.0)
-      include(${CMake_SOURCE_DIR}/Modules/FindJsonCpp.cmake)
+    if(NOT CMAKE_VERSION VERSION_LESS 3.0)
+      include(${CMake_SOURCE_DIR}/Source/Modules/FindJsonCpp.cmake)
     else()
       message(FATAL_ERROR "CMAKE_USE_SYSTEM_JSONCPP requires CMake >= 3.0")
     endif()
diff --git a/Help/manual/cmake-modules.7.rst b/Help/manual/cmake-modules.7.rst
index db56010988..965eedea63 100644
--- a/Help/manual/cmake-modules.7.rst
+++ b/Help/manual/cmake-modules.7.rst
@@ -126,7 +126,6 @@ All Modules
    /module/FindJava
    /module/FindJNI
    /module/FindJPEG
-   /module/FindJsonCpp
    /module/FindKDE3
    /module/FindKDE4
    /module/FindLAPACK
diff --git a/Help/module/FindJsonCpp.rst b/Help/module/FindJsonCpp.rst
deleted file mode 100644
index ba87ecea5b..0000000000
--- a/Help/module/FindJsonCpp.rst
+++ /dev/null
@@ -1 +0,0 @@
-.. cmake-module:: ../../Modules/FindJsonCpp.cmake
diff --git a/Help/release/3.2.rst b/Help/release/3.2.rst
index ddc3d86652..ef26dbea70 100644
--- a/Help/release/3.2.rst
+++ b/Help/release/3.2.rst
@@ -124,9 +124,6 @@ Modules
 * A :module:`FindIntl` module was introduced to find the
   Gettext ``libintl`` library.
 
-* A :module:`FindJsonCpp` module was introduced to find the
-  JsonCpp package.
-
 * The :module:`FindLATEX` module learned to support components.
 
 * The :module:`FindMPI` module learned to find MS-MPI on Windows.
diff --git a/Modules/FindJsonCpp.cmake b/Source/Modules/FindJsonCpp.cmake
similarity index 97%
rename from Modules/FindJsonCpp.cmake
rename to Source/Modules/FindJsonCpp.cmake
index cbb4fb3aa8..014d3bd731 100644
--- a/Modules/FindJsonCpp.cmake
+++ b/Source/Modules/FindJsonCpp.cmake
@@ -93,7 +93,7 @@ unset(_JsonCpp_H_REGEX)
 unset(_JsonCpp_H)
 
 #-----------------------------------------------------------------------------
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+include(${CMAKE_CURRENT_LIST_DIR}/../../Modules/FindPackageHandleStandardArgs.cmake)
 FIND_PACKAGE_HANDLE_STANDARD_ARGS(JsonCpp
   FOUND_VAR JsonCpp_FOUND
   REQUIRED_VARS JsonCpp_LIBRARY JsonCpp_INCLUDE_DIR
diff --git a/Tests/FindJsonCpp/Test/CMakeLists.txt b/Tests/FindJsonCpp/Test/CMakeLists.txt
index 4e1e27108f..d1dc647b39 100644
--- a/Tests/FindJsonCpp/Test/CMakeLists.txt
+++ b/Tests/FindJsonCpp/Test/CMakeLists.txt
@@ -2,6 +2,9 @@ cmake_minimum_required(VERSION 3.1)
 project(TestFindJsonCpp CXX)
 include(CTest)
 
+# CMake does not actually provide FindJsonCpp publicly.
+set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../Source/Modules)
+
 find_package(JsonCpp REQUIRED)
 
 add_executable(test_jsoncpp_tgt main.cxx)
-- 
GitLab