mirror of
https://github.com/facebook/proxygen.git
synced 2025-08-08 18:02:05 +03:00
Summary: Currently on latest CentOS 8 stream dev server, gflags rpm have an invalid path. fb303 will produce an invalid path in the installed cmake. Anyone using this fb303 will then fail to compile. Reviewed By: srikrishnagopu Differential Revision: D41073188 fbshipit-source-id: 6ad4f60391c9253be614acc5d091236bf87d4697
107 lines
4.1 KiB
CMake
107 lines
4.1 KiB
CMake
# Copyright (c) Facebook, Inc. and its affiliates.
|
|
# Find libgflags.
|
|
# There's a lot of compatibility cruft going on in here, both
|
|
# to deal with changes across the FB consumers of this and also
|
|
# to deal with variances in behavior of cmake itself.
|
|
#
|
|
# Since this file is named FindGflags.cmake the cmake convention
|
|
# is for the module to export both GFLAGS_FOUND and Gflags_FOUND.
|
|
# The convention expected by consumers is that we export the
|
|
# following variables, even though these do not match the cmake
|
|
# conventions:
|
|
#
|
|
# LIBGFLAGS_INCLUDE_DIR - where to find gflags/gflags.h, etc.
|
|
# LIBGFLAGS_LIBRARY - List of libraries when using libgflags.
|
|
# LIBGFLAGS_FOUND - True if libgflags found.
|
|
#
|
|
# We need to be able to locate gflags both from an installed
|
|
# cmake config file and just from the raw headers and libs, so
|
|
# test for the former and then the latter, and then stick
|
|
# the results together and export them into the variables
|
|
# listed above.
|
|
#
|
|
# For forwards compatibility, we export the following variables:
|
|
#
|
|
# gflags_INCLUDE_DIR - where to find gflags/gflags.h, etc.
|
|
# gflags_TARGET / GFLAGS_TARGET / gflags_LIBRARIES
|
|
# - List of libraries when using libgflags.
|
|
# gflags_FOUND - True if libgflags found.
|
|
#
|
|
|
|
IF (LIBGFLAGS_INCLUDE_DIR)
|
|
# Already in cache, be silent
|
|
SET(Gflags_FIND_QUIETLY TRUE)
|
|
ENDIF ()
|
|
|
|
find_package(gflags CONFIG QUIET)
|
|
if (gflags_FOUND)
|
|
if (NOT Gflags_FIND_QUIETLY)
|
|
message(STATUS "Found gflags from package config ${gflags_CONFIG}")
|
|
endif()
|
|
# Re-export the config-specified libs with our local names
|
|
set(LIBGFLAGS_LIBRARY ${gflags_LIBRARIES})
|
|
set(LIBGFLAGS_INCLUDE_DIR ${gflags_INCLUDE_DIR})
|
|
if(NOT EXISTS "${gflags_INCLUDE_DIR}")
|
|
# The gflags-devel RPM on recent RedHat-based systems is somewhat broken.
|
|
# RedHat symlinks /lib64 to /usr/lib64, and this breaks some of the
|
|
# relative path computation performed in gflags-config.cmake. The package
|
|
# config file ends up being found via /lib64, but the relative path
|
|
# computation it does only works if it was found in /usr/lib64.
|
|
# If gflags_INCLUDE_DIR does not actually exist, simply default it to
|
|
# /usr/include on these systems.
|
|
set(LIBGFLAGS_INCLUDE_DIR "/usr/include")
|
|
set(GFLAGS_INCLUDE_DIR "/usr/include")
|
|
endif()
|
|
set(LIBGFLAGS_FOUND ${gflags_FOUND})
|
|
# cmake module compat
|
|
set(GFLAGS_FOUND ${gflags_FOUND})
|
|
set(Gflags_FOUND ${gflags_FOUND})
|
|
else()
|
|
FIND_PATH(LIBGFLAGS_INCLUDE_DIR gflags/gflags.h)
|
|
|
|
FIND_LIBRARY(LIBGFLAGS_LIBRARY_DEBUG NAMES gflagsd gflags_staticd)
|
|
FIND_LIBRARY(LIBGFLAGS_LIBRARY_RELEASE NAMES gflags gflags_static)
|
|
|
|
INCLUDE(SelectLibraryConfigurations)
|
|
SELECT_LIBRARY_CONFIGURATIONS(LIBGFLAGS)
|
|
|
|
# handle the QUIETLY and REQUIRED arguments and set LIBGFLAGS_FOUND to TRUE if
|
|
# all listed variables are TRUE
|
|
INCLUDE(FindPackageHandleStandardArgs)
|
|
FIND_PACKAGE_HANDLE_STANDARD_ARGS(gflags DEFAULT_MSG LIBGFLAGS_LIBRARY LIBGFLAGS_INCLUDE_DIR)
|
|
# cmake module compat
|
|
set(Gflags_FOUND ${GFLAGS_FOUND})
|
|
# compat with some existing FindGflags consumers
|
|
set(LIBGFLAGS_FOUND ${GFLAGS_FOUND})
|
|
|
|
# Compat with the gflags CONFIG based detection
|
|
set(gflags_FOUND ${GFLAGS_FOUND})
|
|
set(gflags_INCLUDE_DIR ${LIBGFLAGS_INCLUDE_DIR})
|
|
set(gflags_LIBRARIES ${LIBGFLAGS_LIBRARY})
|
|
set(GFLAGS_TARGET ${LIBGFLAGS_LIBRARY})
|
|
set(gflags_TARGET ${LIBGFLAGS_LIBRARY})
|
|
|
|
MARK_AS_ADVANCED(LIBGFLAGS_LIBRARY LIBGFLAGS_INCLUDE_DIR)
|
|
endif()
|
|
|
|
# Compat with the gflags CONFIG based detection
|
|
if (LIBGFLAGS_FOUND AND NOT TARGET gflags)
|
|
add_library(gflags UNKNOWN IMPORTED)
|
|
if(TARGET gflags-shared)
|
|
# If the installed gflags CMake package config defines a gflags-shared
|
|
# target but not gflags, just make the gflags target that we define
|
|
# depend on the gflags-shared target.
|
|
target_link_libraries(gflags INTERFACE gflags-shared)
|
|
# Export LIBGFLAGS_LIBRARY as the gflags-shared target in this case.
|
|
set(LIBGFLAGS_LIBRARY gflags-shared)
|
|
else()
|
|
set_target_properties(
|
|
gflags
|
|
PROPERTIES
|
|
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
|
|
IMPORTED_LOCATION "${LIBGFLAGS_LIBRARY}"
|
|
INTERFACE_INCLUDE_DIRECTORIES "${LIBGFLAGS_INCLUDE_DIR}"
|
|
)
|
|
endif()
|
|
endif()
|