xref: /aosp_15_r20/external/pytorch/cmake/public/gflags.cmake (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
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