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