diff --git a/cmake/FindOptionalPackage.cmake b/cmake/FindOptionalPackage.cmake
index b19bad5fc45ad5be3ba259b21dc0c5d1243f9acf..c5328d9a7edd4f1a937c0e1a5dc0b440de1050e2 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 e01188e92df5af667c479a1b1f892558484c1029..0f7c445d33726257e2cfd280273e1d9ba07b8338 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 7a6fa44afd5d22ffc0d171aedcc47c43be568feb..98c348350656d891a303bc2c4a3fdd9daffe2112 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()