Warning, /frameworks/extra-cmake-modules/find-modules/FindXCB.cmake is written in an unsupported language. File is not indexed.
0001 # SPDX-FileCopyrightText: 2011 Fredrik Höglund <fredrik@kde.org>
0002 # SPDX-FileCopyrightText: 2013 Martin Gräßlin <mgraesslin@kde.org>
0003 # SPDX-FileCopyrightText: 2014-2015 Alex Merry <alex.merry@kde.org>
0004 #
0005 # SPDX-License-Identifier: BSD-3-Clause
0006
0007 #[=======================================================================[.rst:
0008 FindXCB
0009 -------
0010
0011 Try to find XCB.
0012
0013 This is a component-based find module, which makes use of the COMPONENTS and
0014 OPTIONAL_COMPONENTS arguments to find_module. The following components are
0015 available::
0016
0017 XCB
0018 ATOM AUX COMPOSITE CURSOR DAMAGE
0019 DPMS DRI2 DRI3 EVENT EWMH
0020 GLX ICCCM IMAGE KEYSYMS PRESENT
0021 RANDR RECORD RENDER RENDERUTIL RES
0022 SCREENSAVER SHAPE SHM SYNC UTIL
0023 XF86DRI XFIXES XINERAMA XINPUT XKB
0024 XTEST XV XVMC
0025
0026 If no components are specified, this module will act as though all components
0027 were passed to OPTIONAL_COMPONENTS. Before 5.82 this excluded XINPUT. Since 5.82
0028 all components are searched for.
0029
0030 This module will define the following variables, independently of the
0031 components searched for or found:
0032
0033 ``XCB_FOUND``
0034 True if (the requestion version of) xcb is available
0035 ``XCB_VERSION``
0036 Found xcb version
0037 ``XCB_TARGETS``
0038 A list of all targets imported by this module (note that there may be more
0039 than the components that were requested)
0040 ``XCB_LIBRARIES``
0041 This can be passed to target_link_libraries() instead of the imported
0042 targets
0043 ``XCB_INCLUDE_DIRS``
0044 This should be passed to target_include_directories() if the targets are
0045 not used for linking
0046 ``XCB_DEFINITIONS``
0047 This should be passed to target_compile_options() if the targets are not
0048 used for linking
0049
0050 For each searched-for components, ``XCB_<component>_FOUND`` will be set to
0051 true if the corresponding xcb library was found, and false otherwise. If
0052 ``XCB_<component>_FOUND`` is true, the imported target ``XCB::<component>``
0053 will be defined. This module will also attempt to determine
0054 ``XCB_*_VERSION`` variables for each imported target, although
0055 ``XCB_VERSION`` should normally be sufficient.
0056
0057 In general we recommend using the imported targets, as they are easier to use
0058 and provide more control. Bear in mind, however, that if any target is in the
0059 link interface of an exported library, it must be made available by the
0060 package config file.
0061
0062 Since pre-1.0.0.
0063 #]=======================================================================]
0064
0065 include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpersStub.cmake)
0066
0067 ecm_find_package_version_check(XCB)
0068
0069 # Note that this list needs to be ordered such that any component
0070 # appears after its dependencies
0071 set(XCB_known_components
0072 XCB
0073 RENDER
0074 SHAPE
0075 XFIXES
0076 SHM
0077 ATOM
0078 AUX
0079 COMPOSITE
0080 CURSOR
0081 DAMAGE
0082 DPMS
0083 DRI2
0084 DRI3
0085 EVENT
0086 EWMH
0087 GLX
0088 ICCCM
0089 IMAGE
0090 KEYSYMS
0091 PRESENT
0092 RANDR
0093 RECORD
0094 RENDERUTIL
0095 RES
0096 SCREENSAVER
0097 SYNC
0098 UTIL
0099 XF86DRI
0100 XINERAMA
0101 XINPUT
0102 XKB
0103 XTEST
0104 XV
0105 XVMC
0106 )
0107
0108 # default component info: xcb components have fairly predictable
0109 # header files, library names and pkg-config names
0110 foreach(_comp ${XCB_known_components})
0111 string(TOLOWER "${_comp}" _lc_comp)
0112 set(XCB_${_comp}_component_deps XCB)
0113 set(XCB_${_comp}_pkg_config "xcb-${_lc_comp}")
0114 set(XCB_${_comp}_lib "xcb-${_lc_comp}")
0115 set(XCB_${_comp}_header "xcb/${_lc_comp}.h")
0116 endforeach()
0117 # exceptions
0118 set(XCB_XCB_component_deps)
0119 set(XCB_COMPOSITE_component_deps XCB XFIXES)
0120 set(XCB_DAMAGE_component_deps XCB XFIXES)
0121 set(XCB_IMAGE_component_deps XCB SHM)
0122 set(XCB_RENDERUTIL_component_deps XCB RENDER)
0123 set(XCB_XFIXES_component_deps XCB RENDER SHAPE)
0124 set(XCB_XVMC_component_deps XCB XV)
0125 set(XCB_XV_component_deps XCB SHM)
0126 set(XCB_XCB_pkg_config "xcb")
0127 set(XCB_XCB_lib "xcb")
0128 set(XCB_ATOM_header "xcb/xcb_atom.h")
0129 set(XCB_ATOM_lib "xcb-util")
0130 set(XCB_AUX_header "xcb/xcb_aux.h")
0131 set(XCB_AUX_lib "xcb-util")
0132 set(XCB_CURSOR_header "xcb/xcb_cursor.h")
0133 set(XCB_EVENT_header "xcb/xcb_event.h")
0134 set(XCB_EVENT_lib "xcb-util")
0135 set(XCB_EWMH_header "xcb/xcb_ewmh.h")
0136 set(XCB_ICCCM_header "xcb/xcb_icccm.h")
0137 set(XCB_IMAGE_header "xcb/xcb_image.h")
0138 set(XCB_KEYSYMS_header "xcb/xcb_keysyms.h")
0139 set(XCB_PIXEL_header "xcb/xcb_pixel.h")
0140 set(XCB_RENDERUTIL_header "xcb/xcb_renderutil.h")
0141 set(XCB_RENDERUTIL_lib "xcb-render-util")
0142 set(XCB_UTIL_header "xcb/xcb_util.h")
0143
0144 ecm_find_package_parse_components(XCB
0145 RESULT_VAR XCB_components
0146 KNOWN_COMPONENTS ${XCB_known_components}
0147 DEFAULT_COMPONENTS ${XCB_default_components}
0148 )
0149
0150 ecm_find_package_handle_library_components(XCB
0151 COMPONENTS ${XCB_components}
0152 )
0153
0154 find_package_handle_standard_args(XCB
0155 FOUND_VAR
0156 XCB_FOUND
0157 REQUIRED_VARS
0158 XCB_LIBRARIES
0159 VERSION_VAR
0160 XCB_VERSION
0161 HANDLE_COMPONENTS
0162 )
0163
0164 include(FeatureSummary)
0165 set_package_properties(XCB PROPERTIES
0166 URL "https://xcb.freedesktop.org/"
0167 DESCRIPTION "X protocol C-language Binding"
0168 )