Blame cmake/DetermineGflagsNamespace.cmake

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