]> git.proxmox.com Git - ceph.git/blob - ceph/cmake/modules/FindFUSE.cmake
import 15.2.4
[ceph.git] / ceph / cmake / modules / FindFUSE.cmake
1 # This module can find FUSE Library
2 #
3 # The following variables will be defined for your use:
4 # - FUSE_FOUND : was FUSE found?
5 # - FUSE_INCLUDE_DIRS : FUSE include directory
6 # - FUSE_LIBRARIES : FUSE library
7 # - FUSE_VERSION : the version of the FUSE library found
8
9 if(PACKAGE_FIND_VERSION AND PACKAGE_FIND_VERSION VERSION_LESS "3.0")
10 set(fuse_names fuse)
11 set(fuse_suffixes fuse)
12 else()
13 set(fuse_names fuse3 fuse)
14 set(fuse_suffixes fuse3 fuse)
15 endif()
16
17 if(APPLE)
18 list(APPEND fuse_names libosxfuse.dylib)
19 list(APPEND fuse_suffixes osxfuse)
20 endif()
21
22 find_package(PkgConfig QUIET)
23 if(PKG_CONFIG_FOUND)
24 pkg_search_module(PKG_FUSE QUIET ${fuse_names})
25
26 string(REGEX REPLACE "([0-9]+)\.([0-9]+)\.([0-9]+)"
27 "\\1" FUSE_MAJOR_VERSION "${PKG_FUSE_VERSION}")
28 string(REGEX REPLACE "([0-9]+)\.([0-9]+)\.([0-9]+)"
29 "\\2" FUSE_MINOR_VERSION "${PKG_FUSE_VERSION}")
30
31 find_path(
32 FUSE_INCLUDE_DIR
33 NAMES fuse_common.h fuse_lowlevel.h fuse.h
34 HINTS ${PKG_FUSE_INCLUDE_DIRS}
35 PATH_SUFFIXES ${fuse_suffixes}
36 NO_DEFAULT_PATH)
37
38 find_library(FUSE_LIBRARIES
39 NAMES ${fuse_names}
40 HINTS ${PKG_FUSE_LIBDIR}
41 NO_DEFAULT_PATH)
42 else()
43 find_path(
44 FUSE_INCLUDE_DIR
45 NAMES fuse_common.h fuse_lowlevel.h fuse.h
46 PATH_SUFFIXES ${fuse_suffixes})
47
48 find_library(FUSE_LIBRARIES
49 NAMES ${fuse_names}
50 PATHS /usr/local/lib64 /usr/local/lib)
51
52 foreach(ver "MAJOR" "MINOR")
53 file(STRINGS "${FUSE_INCLUDE_DIR}/fuse_common.h" fuse_ver_${ver}_line
54 REGEX "^#define[\t ]+FUSE_${ver}_VERSION[\t ]+[0-9]+$")
55 string(REGEX REPLACE ".*#define[\t ]+FUSE_${ver}_VERSION[\t ]+([0-9]+)$"
56 "\\1" FUSE_${ver}_VERSION "${fuse_ver_${ver}_line}")
57 endforeach()
58 endif()
59
60 set(FUSE_VERSION
61 "${FUSE_MAJOR_VERSION}.${FUSE_MINOR_VERSION}")
62
63 include(FindPackageHandleStandardArgs)
64 find_package_handle_standard_args(FUSE
65 REQUIRED_VARS FUSE_LIBRARIES FUSE_INCLUDE_DIR
66 VERSION_VAR FUSE_VERSION)
67
68 mark_as_advanced(
69 FUSE_INCLUDE_DIR)
70
71 if(FUSE_FOUND)
72 set(FUSE_INCLUDE_DIRS ${FUSE_INCLUDE_DIR})
73 if(NOT TARGET FUSE::FUSE)
74 add_library(FUSE::FUSE UNKNOWN IMPORTED)
75 set_target_properties(FUSE::FUSE PROPERTIES
76 INTERFACE_INCLUDE_DIRECTORIES "${FUSE_INCLUDE_DIRS}"
77 IMPORTED_LINK_INTERFACE_LANGUAGES "C"
78 IMPORTED_LOCATION "${FUSE_LIBRARIES}"
79 VERSION "${FUSE_VERSION}")
80 endif()
81 endif()