1*da0073e9SAndroid Build Coastguard Worker# ---[ gflags 2*da0073e9SAndroid Build Coastguard Worker 3*da0073e9SAndroid Build Coastguard Worker# We will try to use the config mode first, and then manual find. 4*da0073e9SAndroid Build Coastguard Workerfind_package(gflags CONFIG QUIET) 5*da0073e9SAndroid Build Coastguard Workerif(NOT TARGET gflags) 6*da0073e9SAndroid Build Coastguard Worker find_package(gflags MODULE QUIET) 7*da0073e9SAndroid Build Coastguard Workerendif() 8*da0073e9SAndroid Build Coastguard Worker 9*da0073e9SAndroid Build Coastguard Workerif(TARGET gflags) 10*da0073e9SAndroid Build Coastguard Worker message(STATUS "Caffe2: Found gflags with new-style gflags target.") 11*da0073e9SAndroid Build Coastguard Workerelseif(GFLAGS_FOUND) 12*da0073e9SAndroid Build Coastguard Worker message(STATUS "Caffe2: Found gflags with old-style gflag starget.") 13*da0073e9SAndroid Build Coastguard Worker add_library(gflags UNKNOWN IMPORTED) 14*da0073e9SAndroid Build Coastguard Worker set_property( 15*da0073e9SAndroid Build Coastguard Worker TARGET gflags PROPERTY IMPORTED_LOCATION ${GFLAGS_LIBRARY}) 16*da0073e9SAndroid Build Coastguard Worker set_property( 17*da0073e9SAndroid Build Coastguard Worker TARGET gflags PROPERTY INTERFACE_INCLUDE_DIRECTORIES 18*da0073e9SAndroid Build Coastguard Worker ${GFLAGS_INCLUDE_DIR}) 19*da0073e9SAndroid Build Coastguard Workerelse() 20*da0073e9SAndroid Build Coastguard Worker message(STATUS 21*da0073e9SAndroid Build Coastguard Worker "Caffe2: Cannot find gflags automatically. Using legacy find.") 22*da0073e9SAndroid Build Coastguard Worker 23*da0073e9SAndroid Build Coastguard Worker # - Try to find GFLAGS in the legacy way. 24*da0073e9SAndroid Build Coastguard Worker # 25*da0073e9SAndroid Build Coastguard Worker # The following variables are optionally searched for defaults 26*da0073e9SAndroid Build Coastguard Worker # GFLAGS_ROOT_DIR: Base directory where all GFLAGS components are found 27*da0073e9SAndroid Build Coastguard Worker # 28*da0073e9SAndroid Build Coastguard Worker # The following are set after configuration is done: 29*da0073e9SAndroid Build Coastguard Worker # GFLAGS_FOUND 30*da0073e9SAndroid Build Coastguard Worker # GFLAGS_INCLUDE_DIRS 31*da0073e9SAndroid Build Coastguard Worker # GFLAGS_LIBRARIES 32*da0073e9SAndroid Build Coastguard Worker # GFLAGS_LIBRARYRARY_DIRS 33*da0073e9SAndroid Build Coastguard Worker include(FindPackageHandleStandardArgs) 34*da0073e9SAndroid Build Coastguard Worker set(GFLAGS_ROOT_DIR "" CACHE PATH "Folder contains Gflags") 35*da0073e9SAndroid Build Coastguard Worker 36*da0073e9SAndroid Build Coastguard Worker # We are testing only a couple of files in the include directories 37*da0073e9SAndroid Build Coastguard Worker if(WIN32) 38*da0073e9SAndroid Build Coastguard Worker find_path(GFLAGS_INCLUDE_DIR gflags/gflags.h 39*da0073e9SAndroid Build Coastguard Worker PATHS ${GFLAGS_ROOT_DIR}/src/windows) 40*da0073e9SAndroid Build Coastguard Worker else() 41*da0073e9SAndroid Build Coastguard Worker find_path(GFLAGS_INCLUDE_DIR gflags/gflags.h 42*da0073e9SAndroid Build Coastguard Worker PATHS ${GFLAGS_ROOT_DIR}) 43*da0073e9SAndroid Build Coastguard Worker endif() 44*da0073e9SAndroid Build Coastguard Worker 45*da0073e9SAndroid Build Coastguard Worker if(WIN32) 46*da0073e9SAndroid Build Coastguard Worker find_library(GFLAGS_LIBRARY_RELEASE 47*da0073e9SAndroid Build Coastguard Worker NAMES libgflags 48*da0073e9SAndroid Build Coastguard Worker PATHS ${GFLAGS_ROOT_DIR} 49*da0073e9SAndroid Build Coastguard Worker PATH_SUFFIXES Release) 50*da0073e9SAndroid Build Coastguard Worker 51*da0073e9SAndroid Build Coastguard Worker find_library(GFLAGS_LIBRARY_DEBUG 52*da0073e9SAndroid Build Coastguard Worker NAMES libgflags-debug 53*da0073e9SAndroid Build Coastguard Worker PATHS ${GFLAGS_ROOT_DIR} 54*da0073e9SAndroid Build Coastguard Worker PATH_SUFFIXES Debug) 55*da0073e9SAndroid Build Coastguard Worker set(GFLAGS_LIBRARY optimized ${GFLAGS_LIBRARY_RELEASE} debug ${GFLAGS_LIBRARY_DEBUG}) 56*da0073e9SAndroid Build Coastguard Worker else() 57*da0073e9SAndroid Build Coastguard Worker find_library(GFLAGS_LIBRARY gflags) 58*da0073e9SAndroid Build Coastguard Worker endif() 59*da0073e9SAndroid Build Coastguard Worker 60*da0073e9SAndroid Build Coastguard Worker find_package_handle_standard_args( 61*da0073e9SAndroid Build Coastguard Worker gflags DEFAULT_MSG GFLAGS_INCLUDE_DIR GFLAGS_LIBRARY) 62*da0073e9SAndroid Build Coastguard Worker 63*da0073e9SAndroid Build Coastguard Worker if(GFLAGS_FOUND) 64*da0073e9SAndroid Build Coastguard Worker message( 65*da0073e9SAndroid Build Coastguard Worker STATUS 66*da0073e9SAndroid Build Coastguard Worker "Caffe2: Found gflags (include: ${GFLAGS_INCLUDE_DIR}, " 67*da0073e9SAndroid Build Coastguard Worker "library: ${GFLAGS_LIBRARY})") 68*da0073e9SAndroid Build Coastguard Worker add_library(gflags UNKNOWN IMPORTED) 69*da0073e9SAndroid Build Coastguard Worker set_property( 70*da0073e9SAndroid Build Coastguard Worker TARGET gflags PROPERTY IMPORTED_LOCATION ${GFLAGS_LIBRARY}) 71*da0073e9SAndroid Build Coastguard Worker set_property( 72*da0073e9SAndroid Build Coastguard Worker TARGET gflags PROPERTY INTERFACE_INCLUDE_DIRECTORIES 73*da0073e9SAndroid Build Coastguard Worker ${GFLAGS_INCLUDE_DIR}) 74*da0073e9SAndroid Build Coastguard Worker endif() 75*da0073e9SAndroid Build Coastguard Workerendif() 76*da0073e9SAndroid Build Coastguard Worker 77*da0073e9SAndroid Build Coastguard Worker# After above, we should have the gflags target now. 78*da0073e9SAndroid Build Coastguard Workerif(NOT TARGET gflags) 79*da0073e9SAndroid Build Coastguard Worker message(WARNING 80*da0073e9SAndroid Build Coastguard Worker "Caffe2: gflags cannot be found. Depending on whether you are building " 81*da0073e9SAndroid Build Coastguard Worker "Caffe2 or a Caffe2 dependent library, the next warning / error will " 82*da0073e9SAndroid Build Coastguard Worker "give you more info.") 83*da0073e9SAndroid Build Coastguard Workerendif() 84