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