From 2c97da81b89f2662354f8941871c3ca794b8dd88 Mon Sep 17 00:00:00 2001
From: Roman Tsisyk <roman@tsisyk.com>
Date: Thu, 11 Jul 2013 20:23:11 +0400
Subject: [PATCH] CMake fix for find_optional_package

---
 cmake/FindOptionalPackage.cmake | 23 +++++++++++++++--------
 src/plugin/mysql/CMakeLists.txt |  2 ++
 src/plugin/pg/CMakeLists.txt    |  2 +-
 3 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/cmake/FindOptionalPackage.cmake b/cmake/FindOptionalPackage.cmake
index b19bad5fc4..c5328d9a7e 100644
--- a/cmake/FindOptionalPackage.cmake
+++ b/cmake/FindOptionalPackage.cmake
@@ -8,17 +8,24 @@ endif()
 
 macro (find_optional_package _package)
     string(TOUPPER ${_package} _packageUpper)
-    if (WITH_${_packageUpper})
-        # WITH_${_packageUpper} option requested by the user
+    if (NOT DEFINED WITH_${_packageUpper})
+        # First run and WITH_${_packageUpper} option is not set by the user.
+        # Enable auto-mode and try to find package.
+        find_package(${_package} ${ARGN})
+    elseif (WITH_${_packageUpper})
+        # Non-first run or WITH_${_packageUpper} was set by the user.
+        # Force error if the package will not be found.
         set(${_packageUpper}_FIND_REQUIRED ON)
-    endif()
-    option(WITH_${_packageUpper} "Search for ${_package} package" ON)
-    if (WITH_${_packageUpper})
         find_package(${_package} ${ARGN})
-    else (WITH_${_packageUpper})
-        set(${_package}_FOUND OFF)
-        set(${_packageUpper}_FOUND OFF)
     endif ()
+    if (${_package}_FOUND OR ${_packageUpper}_FOUND)
+        set(_default ON)
+    else()
+        set(_default OFF)
+    endif()
+    # Add the user option and (!) update the cache
+    option(WITH_${_packageUpper} "Search for ${_package} package" ${_default})
+    # Now ${WITH_${_packageUpper}} is either ON or OFF
     file(APPEND "${_OptionalPackagesFile}"
          "-- WITH_${_packageUpper}=${WITH_${_packageUpper}}\n")
 endmacro (find_optional_package)
diff --git a/src/plugin/mysql/CMakeLists.txt b/src/plugin/mysql/CMakeLists.txt
index e01188e92d..0f7c445d33 100644
--- a/src/plugin/mysql/CMakeLists.txt
+++ b/src/plugin/mysql/CMakeLists.txt
@@ -8,4 +8,6 @@ if (MYSQL_FOUND)
 	add_library(mysql SHARED mysql.cc)
 	target_link_libraries(mysql ${MYSQL_LIBRARIES})
 	install(TARGETS mysql LIBRARY DESTINATION ${PLUGIN_DIR})
+else()
+	message(STATUS "MySQL client not found, box.net.sql(mysql) disabled")
 endif()
diff --git a/src/plugin/pg/CMakeLists.txt b/src/plugin/pg/CMakeLists.txt
index 7a6fa44afd..98c3483506 100644
--- a/src/plugin/pg/CMakeLists.txt
+++ b/src/plugin/pg/CMakeLists.txt
@@ -11,6 +11,6 @@ if (PostgreSQL_FOUND)
 	install(TARGETS pg LIBRARY DESTINATION ${PLUGIN_DIR})
 
 else()
-	message(STATUS "PostgreSQL client not found")
+	message(STATUS "PostgreSQL client not found, box.net.sql(pg) disabled")
 endif()
 
-- 
GitLab