Austin Schuh | 906616c | 2019-01-21 20:25:11 -0800 | [diff] [blame] | 1 | macro(determine_gflags_namespace VARIABLE) |
| 2 | if (NOT DEFINED "${VARIABLE}") |
| 3 | if (CMAKE_REQUIRED_INCLUDES) |
| 4 | set (CHECK_INCLUDE_FILE_CXX_INCLUDE_DIRS "-DINCLUDE_DIRECTORIES=${CMAKE_REQUIRED_INCLUDES}") |
| 5 | else () |
| 6 | set (CHECK_INCLUDE_FILE_CXX_INCLUDE_DIRS) |
| 7 | endif () |
| 8 | |
| 9 | set(MACRO_CHECK_INCLUDE_FILE_FLAGS ${CMAKE_REQUIRED_FLAGS}) |
| 10 | |
| 11 | set(_NAMESPACES gflags google) |
| 12 | set(_check_code |
| 13 | " |
| 14 | #include <gflags/gflags.h> |
| 15 | |
| 16 | int main(int argc, char**argv) |
| 17 | { |
| 18 | GLOG_GFLAGS_NAMESPACE::ParseCommandLineFlags(&argc, &argv, true); |
| 19 | } |
| 20 | ") |
| 21 | if (NOT CMAKE_REQUIRED_QUIET) |
| 22 | message (STATUS "Looking for gflags namespace") |
| 23 | endif () |
| 24 | if (${ARGC} EQUAL 3) |
| 25 | set (CMAKE_CXX_FLAGS_SAVE ${CMAKE_CXX_FLAGS}) |
| 26 | set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ARGV2}") |
| 27 | endif () |
| 28 | |
| 29 | set (_check_file |
| 30 | ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/DetermineGflagsNamespace.cxx) |
| 31 | |
| 32 | foreach (_namespace ${_NAMESPACES}) |
| 33 | file (WRITE "${_check_file}" "${_check_code}") |
| 34 | try_compile (${VARIABLE} |
| 35 | "${CMAKE_BINARY_DIR}" "${_check_file}" |
| 36 | COMPILE_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}" -DGLOG_GFLAGS_NAMESPACE=${_namespace} |
| 37 | LINK_LIBRARIES gflags |
| 38 | CMAKE_FLAGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} |
| 39 | OUTPUT_VARIABLE OUTPUT) |
| 40 | |
| 41 | if (${VARIABLE}) |
| 42 | set (${VARIABLE} ${_namespace} CACHE INTERNAL "gflags namespace" FORCE) |
| 43 | break () |
| 44 | else () |
| 45 | file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log |
| 46 | "Determining the gflags namespace ${_namespace} failed with the following output:\n" |
| 47 | "${OUTPUT}\n\n") |
| 48 | endif () |
| 49 | endforeach (_namespace) |
| 50 | |
| 51 | if (${ARGC} EQUAL 3) |
| 52 | set (CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS_SAVE}) |
| 53 | endif () |
| 54 | |
| 55 | if (${VARIABLE}) |
| 56 | if (NOT CMAKE_REQUIRED_QUIET) |
| 57 | message (STATUS "Looking for gflags namespace - ${${VARIABLE}}") |
| 58 | endif () |
| 59 | file (APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log |
| 60 | "Determining the gflags namespace passed with the following output:\n" |
| 61 | "${OUTPUT}\n\n") |
| 62 | else () |
| 63 | if (NOT CMAKE_REQUIRED_QUIET) |
| 64 | message (STATUS "Looking for gflags namespace - failed") |
| 65 | endif () |
| 66 | set (${VARIABLE} ${_namespace} CACHE INTERNAL "gflags namespace") |
| 67 | endif () |
| 68 | endif () |
| 69 | endmacro () |