FindLibSpectre: Use FindPkgConfig instead of UsePkgConfig

The latter is deprecated and doesn't respect the PKG_CONFIG
environment variable which makes it easy to deal with differently
named pkg-config executables, e.g. arch-prefixed ones.

REVIEW: 123393
remotes/origin/Applications/15.04
Heiko Becker 11 years ago
parent aed8a9b3cd
commit 966e19582c
  1. 54
      cmake/modules/FindLibSpectre.cmake

@ -20,42 +20,34 @@ if(LIBSPECTRE_INCLUDE_DIR AND LIBSPECTRE_LIBRARY)
else(LIBSPECTRE_INCLUDE_DIR AND LIBSPECTRE_LIBRARY) else(LIBSPECTRE_INCLUDE_DIR AND LIBSPECTRE_LIBRARY)
if(NOT WIN32) if(NOT WIN32)
# use pkg-config to get the directories and then use these values # use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls # in the FIND_PATH() and FIND_LIBRARY() calls
INCLUDE(UsePkgConfig) include(FindPkgConfig)
PKGCONFIG(libspectre _SpectreIncDir _SpectreLinkDir _SpectreLinkFlags _SpectreCflags) if(LIBSPECTRE_MINIMUM_VERSION})
pkg_check_modules(_pc_LIBSPECTRE libspectre>=${LIBSPECTRE_MINIMUM_VERSION})
if(_SpectreLinkFlags) else(LIBSPECTRE_MINIMUM_VERSION})
# find again pkg-config, to query it about libspectre version pkg_check_modules(_pc_LIBSPECTRE libspectre)
FIND_PROGRAM(PKGCONFIG_EXECUTABLE NAMES pkg-config PATHS /usr/bin/ /usr/local/bin ) endif(LIBSPECTRE_MINIMUM_VERSION})
# query pkg-config asking for a libspectre >= LIBSPECTRE_MINIMUM_VERSION
EXEC_PROGRAM(${PKGCONFIG_EXECUTABLE} ARGS --atleast-version=${LIBSPECTRE_MINIMUM_VERSION} libspectre RETURN_VALUE _return_VALUE OUTPUT_VARIABLE _pkgconfigDevNull )
if(_return_VALUE STREQUAL "0")
set(LIBSPECTRE_INTERNAL_FOUND TRUE)
endif(_return_VALUE STREQUAL "0")
endif(_SpectreLinkFlags)
else(NOT WIN32) else(NOT WIN32)
# do not use pkg-config on windows # do not use pkg-config on windows
find_library(_SpectreLinkFlags NAMES libspectre spectre PATHS ${CMAKE_LIBRARY_PATH}) set(_pc_LIBSPECTRE_FOUND TRUE)
find_path(LIBSPECTRE_INCLUDE_DIR spectre.h PATH_SUFFIXES libspectre )
set(LIBSPECTRE_INTERNAL_FOUND TRUE)
endif(NOT WIN32) endif(NOT WIN32)
if (LIBSPECTRE_INTERNAL_FOUND)
set(LIBSPECTRE_LIBRARY ${_SpectreLinkFlags})
# the cflags for libspectre can contain more than one include path if(_pc_LIBSPECTRE_FOUND)
separate_arguments(_SpectreCflags) find_library(LIBSPECTRE_LIBRARY
foreach(_includedir ${_SpectreCflags}) NAMES libspectre spectre
string(REGEX REPLACE "-I(.+)" "\\1" _includedir "${_includedir}") HINTS ${_pc_LIBSPECTRE_LIBRARY_DIRS} ${CMAKE_LIBRARY_PATH}
set(LIBSPECTRE_INCLUDE_DIR ${LIBSPECTRE_INCLUDE_DIR} ${_includedir}) )
endforeach(_includedir)
endif (LIBSPECTRE_INTERNAL_FOUND) find_path(LIBSPECTRE_INCLUDE_DIR spectre.h
HINTS ${_pc_LIBSPECTRE_INCLUDE_DIRS}
PATH_SUFFIXES libspectre
)
set(LIBSPECTRE_INTERNAL_FOUND TRUE)
endif(_pc_LIBSPECTRE_FOUND)
include(FindPackageHandleStandardArgs) include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LibSpectre DEFAULT_MSG LIBSPECTRE_LIBRARY LIBSPECTRE_INTERNAL_FOUND) find_package_handle_standard_args(LibSpectre DEFAULT_MSG LIBSPECTRE_LIBRARY LIBSPECTRE_INTERNAL_FOUND)

Loading…
Cancel
Save