Respect FIND_QUIETLY flag in cmake config file

Ensure that Ceres does not print any log messages when somebody has
used 'find_package(Ceres QUIET)' in their CMake project.

Change-Id: Id6b68859cc8a5857f3fa78f29736cb82fd5a0943
diff --git a/cmake/CeresConfig.cmake.in b/cmake/CeresConfig.cmake.in
index ced7daf..94099a9 100644
--- a/cmake/CeresConfig.cmake.in
+++ b/cmake/CeresConfig.cmake.in
@@ -91,6 +91,18 @@
   return()
 endmacro(CERES_REPORT_NOT_FOUND)
 
+
+# ceres_message([mode] "message text")
+#
+# Wraps the standard cmake 'message' command, but suppresses output
+# if the QUIET flag was passed to the find_package(Ceres ...) call.
+function(ceres_message)
+  if (NOT Ceres_FIND_QUIETLY)
+    message(${ARGN})
+  endif()
+endfunction()
+
+
 # ceres_pretty_print_cmake_list( OUTPUT_VAR [item1 [item2 ... ]] )
 #
 # Sets ${OUTPUT_VAR} in the caller's scope to a human-readable string
@@ -185,7 +197,7 @@
       "Wikipedia article http://en.wikipedia.org/wiki/One_Definition_Rule "
       "for more details")
   endif ()
-  message(STATUS "Found required Ceres dependency: "
+  ceres_message(STATUS "Found required Ceres dependency: "
     "Eigen version ${CERES_EIGEN_VERSION} in ${EIGEN3_INCLUDE_DIRS}")
 else (EIGEN3_FOUND)
   ceres_report_not_found("Missing required Ceres "
@@ -201,7 +213,7 @@
 if (CERES_USES_MINIGLOG)
   # Output message at standard log level (not the lower STATUS) so that
   # the message is output in GUI during configuration to warn user.
-  message("-- Found Ceres compiled with miniglog substitute "
+  ceres_message("-- Found Ceres compiled with miniglog substitute "
     "for glog, beware this will likely cause problems if glog is later linked.")
 else(CERES_USES_MINIGLOG)
   # As imported CMake targets are not re-exported when a dependent target is
@@ -224,7 +236,7 @@
   # Search quietly s/t we control the timing of the error message if not found.
   find_package(Glog QUIET)
   if (GLOG_FOUND)
-    message(STATUS "Found required Ceres dependency: glog")
+    ceres_message(STATUS "Found required Ceres dependency: glog")
   else()
     ceres_report_not_found("Missing required Ceres "
       "dependency: glog. Searched using GLOG_INCLUDE_DIR_HINTS: "
@@ -237,7 +249,7 @@
     # Search quietly s/t we control the timing of the error message if not found.
     find_package(gflags ${CERES_GFLAGS_VERSION} CONFIG QUIET)
     if (gflags_FOUND)
-      message(STATUS "Found required Ceres dependency: gflags")
+      ceres_message(STATUS "Found required Ceres dependency: gflags")
     else()
       ceres_report_not_found("Missing required Ceres "
         "dependency: gflags.")
@@ -301,7 +313,7 @@
 
 # As we use CERES_REPORT_NOT_FOUND() to abort, if we reach this point we have
 # found Ceres and all required dependencies.
-message(STATUS "Found " ${CERES_DETECTED_VERSION_STRING})
+ceres_message(STATUS "Found " ${CERES_DETECTED_VERSION_STRING})
 
 # Set CERES_FOUND to be equivalent to Ceres_FOUND, which is set to
 # TRUE by FindPackage() if this file is found and run, and after which
diff --git a/cmake/FindGlog.cmake b/cmake/FindGlog.cmake
index 4fc84da..1a7b6c0 100644
--- a/cmake/FindGlog.cmake
+++ b/cmake/FindGlog.cmake
@@ -109,6 +109,16 @@
   return()
 endmacro(GLOG_REPORT_NOT_FOUND)
 
+# glog_message([mode] "message text")
+#
+# Wraps the standard cmake 'message' command, but suppresses output
+# if the QUIET flag was passed to the find_package(Glog ...) call.
+function(GLOG_MESSAGE)
+  if (NOT Glog_FIND_QUIETLY)
+    message(${ARGN})
+  endif()
+endfunction()
+
 # Protect against any alternative find_package scripts for this library having
 # been called previously (in a client project) which set GLOG_FOUND, but not
 # the other variables we require / set here which could cause the search logic
@@ -123,8 +133,8 @@
 if (NOT DEFINED GLOG_PREFER_EXPORTED_GLOG_CMAKE_CONFIGURATION
     AND NOT GLOG_INCLUDE_DIR_HINTS
     AND NOT GLOG_LIBRARY_DIR_HINTS)
-  message(STATUS "No preference for use of exported glog CMake configuration "
-    "set, and no hints for include/library directories provided. "
+  glog_message(STATUS "No preference for use of exported glog CMake "
+    "configuration set, and no hints for include/library directories provided. "
     "Defaulting to preferring an installed/exported glog CMake configuration "
     "if available.")
   set(GLOG_PREFER_EXPORTED_GLOG_CMAKE_CONFIGURATION TRUE)
@@ -144,7 +154,7 @@
     execute_process(COMMAND ${HOMEBREW_EXECUTABLE} --prefix
       OUTPUT_VARIABLE HOMEBREW_INSTALL_PREFIX
       OUTPUT_STRIP_TRAILING_WHITESPACE)
-    message(STATUS "Detected Homebrew with install prefix: "
+    glog_message(STATUS "Detected Homebrew with install prefix: "
       "${HOMEBREW_INSTALL_PREFIX}, adding to CMake search paths.")
     list(APPEND GLOG_INCLUDE_DIR_HINTS "${HOMEBREW_INSTALL_PREFIX}/include")
     list(APPEND GLOG_LIBRARY_DIR_HINTS "${HOMEBREW_INSTALL_PREFIX}/lib")
@@ -202,11 +212,11 @@
                     NO_CMAKE_PACKAGE_REGISTRY
                     NO_CMAKE_BUILDS_PATH)
   if (glog_FOUND)
-    message(STATUS "Found installed version of glog: ${glog_DIR}")
+    glog_message(STATUS "Found installed version of glog: ${glog_DIR}")
   else()
     # Failed to find an installed version of glog, repeat search allowing
     # exported build directories.
-    message(STATUS "Failed to find installed glog CMake configuration, "
+    glog_message(STATUS "Failed to find installed glog CMake configuration, "
       "searching for glog build directories exported with CMake.")
     # Again pass NO_CMAKE_BUILDS_PATH, as we know that glog is exported and
     # do not want to treat projects built with the CMake GUI preferentially.
@@ -215,21 +225,22 @@
                       NO_MODULE
                       NO_CMAKE_BUILDS_PATH)
     if (glog_FOUND)
-      message(STATUS "Found exported glog build directory: ${glog_DIR}")
+      glog_message(STATUS "Found exported glog build directory: ${glog_DIR}")
     endif(glog_FOUND)
   endif(glog_FOUND)
 
   set(FOUND_INSTALLED_GLOG_CMAKE_CONFIGURATION ${glog_FOUND})
 
   if (FOUND_INSTALLED_GLOG_CMAKE_CONFIGURATION)
-    message(STATUS "Detected glog version: ${glog_VERSION}")
+    glog_message(STATUS "Detected glog version: ${glog_VERSION}")
     set(GLOG_FOUND ${glog_FOUND})
     # glog wraps the include directories into the exported glog::glog target.
     set(GLOG_INCLUDE_DIR "")
     set(GLOG_LIBRARY glog::glog)
   else (FOUND_INSTALLED_GLOG_CMAKE_CONFIGURATION)
-    message(STATUS "Failed to find an installed/exported CMake configuration "
-      "for glog, will perform search for installed glog components.")
+    glog_message(STATUS "Failed to find an installed/exported CMake "
+      "configuration for glog, will perform search for installed glog "
+      "components.")
   endif (FOUND_INSTALLED_GLOG_CMAKE_CONFIGURATION)
 endif(GLOG_PREFER_EXPORTED_GLOG_CMAKE_CONFIGURATION)