| macro(determine_gflags_namespace VARIABLE) |
| if (NOT DEFINED "${VARIABLE}") |
| if (CMAKE_REQUIRED_INCLUDES) |
| set (CHECK_INCLUDE_FILE_CXX_INCLUDE_DIRS "-DINCLUDE_DIRECTORIES=${CMAKE_REQUIRED_INCLUDES}") |
| else () |
| set (CHECK_INCLUDE_FILE_CXX_INCLUDE_DIRS) |
| endif () |
| |
| set(MACRO_CHECK_INCLUDE_FILE_FLAGS ${CMAKE_REQUIRED_FLAGS}) |
| |
| set(_NAMESPACES gflags google) |
| set(_check_code |
| " |
| #include <gflags/gflags.h> |
| |
| int main(int argc, char**argv) |
| { |
| GLOG_GFLAGS_NAMESPACE::ParseCommandLineFlags(&argc, &argv, true); |
| } |
| ") |
| if (NOT CMAKE_REQUIRED_QUIET) |
| message (STATUS "Looking for gflags namespace") |
| endif () |
| if (${ARGC} EQUAL 3) |
| set (CMAKE_CXX_FLAGS_SAVE ${CMAKE_CXX_FLAGS}) |
| set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ARGV2}") |
| endif () |
| |
| set (_check_file |
| ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/DetermineGflagsNamespace.cxx) |
| |
| foreach (_namespace ${_NAMESPACES}) |
| file (WRITE "${_check_file}" "${_check_code}") |
| try_compile (${VARIABLE} |
| "${CMAKE_BINARY_DIR}" "${_check_file}" |
| COMPILE_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}" -DGLOG_GFLAGS_NAMESPACE=${_namespace} |
| LINK_LIBRARIES gflags |
| CMAKE_FLAGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} |
| OUTPUT_VARIABLE OUTPUT) |
| |
| if (${VARIABLE}) |
| set (${VARIABLE} ${_namespace} CACHE INTERNAL "gflags namespace" FORCE) |
| break () |
| else () |
| file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log |
| "Determining the gflags namespace ${_namespace} failed with the following output:\n" |
| "${OUTPUT}\n\n") |
| endif () |
| endforeach (_namespace) |
| |
| if (${ARGC} EQUAL 3) |
| set (CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS_SAVE}) |
| endif () |
| |
| if (${VARIABLE}) |
| if (NOT CMAKE_REQUIRED_QUIET) |
| message (STATUS "Looking for gflags namespace - ${${VARIABLE}}") |
| endif () |
| file (APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log |
| "Determining the gflags namespace passed with the following output:\n" |
| "${OUTPUT}\n\n") |
| else () |
| if (NOT CMAKE_REQUIRED_QUIET) |
| message (STATUS "Looking for gflags namespace - failed") |
| endif () |
| set (${VARIABLE} ${_namespace} CACHE INTERNAL "gflags namespace") |
| endif () |
| endif () |
| endmacro () |