69 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| 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 ()
 |