aboutsummaryrefslogtreecommitdiff
path: root/find-modules
diff options
context:
space:
mode:
authorMartin Gräßlin <mgraesslin@kde.org>2013-09-09 06:11:42 +0200
committerMartin Gräßlin <mgraesslin@kde.org>2013-09-09 06:11:42 +0200
commitc5597c4cf761eeb9d895fe99e706c513667a8dd9 (patch)
treeed4905345246636ce5260dcd0d4fa7dabfaf6516 /find-modules
parenta56ad980e3b3f3bd372ba2a4ebdeb01386b52aa7 (diff)
downloadextra-cmake-modules-c5597c4cf761eeb9d895fe99e706c513667a8dd9.tar.gz
extra-cmake-modules-c5597c4cf761eeb9d895fe99e706c513667a8dd9.tar.bz2
Use components in FindXCB
Instead of finding all or nothing from XCB it becomes components aware. So a user can just specify which XCB components it needs and compilation doesn't fail if a not-needed unrelated component is not found. It also allows to have some components as required and some as optional. REVIEW: 112151
Diffstat (limited to 'find-modules')
-rw-r--r--find-modules/FindXCB.cmake360
1 files changed, 221 insertions, 139 deletions
diff --git a/find-modules/FindXCB.cmake b/find-modules/FindXCB.cmake
index 7e7e7016..823d1678 100644
--- a/find-modules/FindXCB.cmake
+++ b/find-modules/FindXCB.cmake
@@ -2,155 +2,237 @@
#
# This will define:
#
-# XCB_FOUND - True if xcb is available
-# XCB_LIBRARIES - Link these to use xcb
-# XCB_INCLUDE_DIR - Include directory for xcb
-# XCB_DEFINITIONS - Compiler flags for using xcb
+# XCB_FOUND - True if xcb is available
+# XCB_LIBRARIES - Link these to use xcb
+# XCB_INCLUDE_DIRS - Include directory for xcb
+# XCB_DEFINITIONS - Compiler flags for using xcb
#
# In addition the following more fine grained variables will be defined:
#
-# XCB_XCB_FOUND XCB_XCB_INCLUDE_DIR XCB_XCB_LIBRARIES
-# XCB_UTIL_FOUND XCB_UTIL_INCLUDE_DIR XCB_UTIL_LIBRARIES
-# XCB_COMPOSITE_FOUND XCB_COMPOSITE_INCLUDE_DIR XCB_COMPOSITE_LIBRARIES
-# XCB_DAMAGE_FOUND XCB_DAMAGE_INCLUDE_DIR XCB_DAMAGE_LIBRARIES
-# XCB_XFIXES_FOUND XCB_XFIXES_INCLUDE_DIR XCB_XFIXES_LIBRARIES
-# XCB_RENDER_FOUND XCB_RENDER_INCLUDE_DIR XCB_RENDER_LIBRARIES
-# XCB_RANDR_FOUND XCB_RANDR_INCLUDE_DIR XCB_RANDR_LIBRARIES
-# XCB_SHAPE_FOUND XCB_SHAPE_INCLUDE_DIR XCB_SHAPE_LIBRARIES
-# XCB_DRI2_FOUND XCB_DRI2_INCLUDE_DIR XCB_DRI2_LIBRARIES
-# XCB_GLX_FOUND XCB_GLX_INCLUDE_DIR XCB_GLX_LIBRARIES
-# XCB_SHM_FOUND XCB_SHM_INCLUDE_DIR XCB_SHM_LIBRARIES
-# XCB_XV_FOUND XCB_XV_INCLUDE_DIR XCB_XV_LIBRARIES
-# XCB_SYNC_FOUND XCB_SYNC_INCLUDE_DIR XCB_SYNC_LIBRARIES
-# XCB_XTEST_FOUND XCB_XTEST_INCLUDE_DIR XCB_XTEST_LIBRARIES
-# XCB_ICCCM_FOUND XCB_ICCCM_INCLUDE_DIR XCB_ICCCM_LIBRARIES
-# XCB_EWMH_FOUND XCB_EWMH_INCLUDE_DIR XCB_EWMH_LIBRARIES
-# XCB_IMAGE_FOUND XCB_IMAGE_INCLUDE_DIR XCB_IMAGE_LIBRARIES
-# XCB_RENDERUTIL_FOUND XCB_RENDERUTIL_INCLUDE_DIR XCB_RENDERUTIL_LIBRARIES
-# XCB_KEYSYMS_FOUND XCB_KEYSYMS_INCLUDE_DIR XCB_KEYSYMS_LIBRARIES
+# XCB_XCB_FOUND XCB_XCB_INCLUDE_DIR XCB_XCB_LIBRARY
+# XCB_UTIL_FOUND XCB_UTIL_INCLUDE_DIR XCB_UTIL_LIBRARY
+# XCB_COMPOSITE_FOUND XCB_COMPOSITE_INCLUDE_DIR XCB_COMPOSITE_LIBRARY
+# XCB_DAMAGE_FOUND XCB_DAMAGE_INCLUDE_DIR XCB_DAMAGE_LIBRARY
+# XCB_XFIXES_FOUND XCB_XFIXES_INCLUDE_DIR XCB_XFIXES_LIBRARY
+# XCB_RENDER_FOUND XCB_RENDER_INCLUDE_DIR XCB_RENDER_LIBRARY
+# XCB_RANDR_FOUND XCB_RANDR_INCLUDE_DIR XCB_RANDR_LIBRARY
+# XCB_SHAPE_FOUND XCB_SHAPE_INCLUDE_DIR XCB_SHAPE_LIBRARY
+# XCB_DRI2_FOUND XCB_DRI2_INCLUDE_DIR XCB_DRI2_LIBRARY
+# XCB_GLX_FOUND XCB_GLX_INCLUDE_DIR XCB_GLX_LIBRARY
+# XCB_SHM_FOUND XCB_SHM_INCLUDE_DIR XCB_SHM_LIBRARY
+# XCB_XV_FOUND XCB_XV_INCLUDE_DIR XCB_XV_LIBRARY
+# XCB_SYNC_FOUND XCB_SYNC_INCLUDE_DIR XCB_SYNC_LIBRARY
+# XCB_XTEST_FOUND XCB_XTEST_INCLUDE_DIR XCB_XTEST_LIBRARY
+# XCB_ICCCM_FOUND XCB_ICCCM_INCLUDE_DIR XCB_ICCCM_LIBRARY
+# XCB_EWMH_FOUND XCB_EWMH_INCLUDE_DIR XCB_EWMH_LIBRARY
+# XCB_IMAGE_FOUND XCB_IMAGE_INCLUDE_DIR XCB_IMAGE_LIBRARY
+# XCB_RENDERUTIL_FOUND XCB_RENDERUTIL_INCLUDE_DIR XCB_RENDERUTIL_LIBRARY
+# XCB_KEYSYMS_FOUND XCB_KEYSYMS_INCLUDE_DIR XCB_KEYSYMS_LIBRARY
#
# Copyright (c) 2011 Fredrik Höglund <fredrik@kde.org>
+# Copyright (c) 2013 Martin Gräßlin <mgraesslin@kde.org>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+set(knownComponents XCB
+ COMPOSITE
+ DAMAGE
+ DRI2
+ EWMH
+ GLX
+ ICCCM
+ IMAGE
+ KEYSYMS
+ RANDR
+ RENDER
+ RENDERUTIL
+ SHAPE
+ SHM
+ SYNC
+ UTIL
+ XFIXES
+ XTEST
+ XV)
+
+unset(unknownComponents)
+
+set(pkgConfigModules)
+set(requiredComponents)
+
+if (XCB_FIND_COMPONENTS)
+ set(comps ${XCB_FIND_COMPONENTS})
+else()
+ set(comps ${knownComponents})
+endif()
+
+# iterate through the list of requested components, and check that we know them all.
+# If not, fail.
+foreach(comp ${comps})
+ list(FIND knownComponents ${comp} index )
+ if("${index}" STREQUAL "-1")
+ list(APPEND unknownComponents "${comp}")
+ else()
+ if("${comp}" STREQUAL "XCB")
+ list(APPEND pkgConfigModules "xcb")
+ elseif("${comp}" STREQUAL "COMPOSITE")
+ list(APPEND pkgConfigModules "xcb-composite")
+ elseif("${comp}" STREQUAL "DAMAGE")
+ list(APPEND pkgConfigModules "xcb-damage")
+ elseif("${comp}" STREQUAL "DRI2")
+ list(APPEND pkgConfigModules "xcb-dri2")
+ elseif("${comp}" STREQUAL "EWMH")
+ list(APPEND pkgConfigModules "xcb-ewmh")
+ elseif("${comp}" STREQUAL "GLX")
+ list(APPEND pkgConfigModules "xcb-glx")
+ elseif("${comp}" STREQUAL "ICCCM")
+ list(APPEND pkgConfigModules "xcb-icccm")
+ elseif("${comp}" STREQUAL "IMAGE")
+ list(APPEND pkgConfigModules "xcb-image")
+ elseif("${comp}" STREQUAL "KEYSYMS")
+ list(APPEND pkgConfigModules "xcb-keysyms")
+ elseif("${comp}" STREQUAL "RANDR")
+ list(APPEND pkgConfigModules "xcb-randr")
+ elseif("${comp}" STREQUAL "RENDER")
+ list(APPEND pkgConfigModules "xcb-render")
+ elseif("${comp}" STREQUAL "RENDERUTIL")
+ list(APPEND pkgConfigModules "xcb-renderutil")
+ elseif("${comp}" STREQUAL "SHAPE")
+ list(APPEND pkgConfigModules "xcb-shape")
+ elseif("${comp}" STREQUAL "SHM")
+ list(APPEND pkgConfigModules "xcb-shm")
+ elseif("${comp}" STREQUAL "SYNC")
+ list(APPEND pkgConfigModules "xcb-sync")
+ elseif("${comp}" STREQUAL "UTIL")
+ list(APPEND pkgConfigModules "xcb-util")
+ elseif("${comp}" STREQUAL "XFIXES")
+ list(APPEND pkgConfigModules "xcb-xfixes")
+ elseif("${comp}" STREQUAL "XTEST")
+ list(APPEND pkgConfigModules "xcb-xtest")
+ elseif("${comp}" STREQUAL "XV")
+ list(APPEND pkgConfigModules "xcb-xv")
+ endif()
+ endif()
+endforeach()
+
+
+if(DEFINED unknownComponents)
+ set(msgType STATUS)
+ if(XCB_FIND_REQUIRED)
+ set(msgType FATAL_ERROR)
+ endif()
+ if(NOT XCB_FIND_QUIETLY)
+ message(${msgType} "XCB: requested unknown components ${unknownComponents}")
+ endif()
+ return()
+endif()
+
+macro(_XCB_HANDLE_COMPONENT _comp)
+ set(_header )
+ set(_lib )
+ if("${_comp}" STREQUAL "XCB")
+ set(_header "xcb/xcb.h")
+ set(_lib "xcb")
+ elseif("${_comp}" STREQUAL "COMPOSITE")
+ set(_header "xcb/composite.h")
+ set(_lib "xcb-composite")
+ elseif("${_comp}" STREQUAL "DAMAGE")
+ set(_header "xcb/damage.h")
+ set(_lib "xcb-damage")
+ elseif("${_comp}" STREQUAL "DRI2")
+ set(_header "xcb/dri2.h")
+ set(_lib "xcb-dri2")
+ elseif("${_comp}" STREQUAL "EWMH")
+ set(_header "xcb/xcb_ewmh.h")
+ set(_lib "xcb-ewmh")
+ elseif("${_comp}" STREQUAL "GLX")
+ set(_header "xcb/glx.h")
+ set(_lib "xcb-glx")
+ elseif("${_comp}" STREQUAL "ICCCM")
+ set(_header "xcb/xcb_icccm.h")
+ set(_lib "xcb-icccm")
+ elseif("${_comp}" STREQUAL "IMAGE")
+ set(_header "xcb/xcb_image.h")
+ set(_lib "xcb-image")
+ elseif("${_comp}" STREQUAL "KEYSYMS")
+ set(_header "xcb/xcb_keysyms.h")
+ set(_lib "xcb-keysyms")
+ elseif("${_comp}" STREQUAL "RANDR")
+ set(_header "xcb/randr.h")
+ set(_lib "xcb-randr")
+ elseif("${_comp}" STREQUAL "RENDER")
+ set(_header "xcb/render.h")
+ set(_lib "xcb-render")
+ elseif("${_comp}" STREQUAL "RENDERUTIL")
+ set(_header "xcb/xcb_renderutil.h")
+ set(_lib "xcb-render-util")
+ elseif("${_comp}" STREQUAL "SHAPE")
+ set(_header "xcb/shape.h")
+ set(_lib "xcb-shape")
+ elseif("${_comp}" STREQUAL "SHM")
+ set(_header "xcb/shm.h")
+ set(_lib "xcb-shm")
+ elseif("${_comp}" STREQUAL "SYNC")
+ set(_header "xcb/sync.h")
+ set(_lib "xcb-sync")
+ elseif("${_comp}" STREQUAL "UTIL")
+ set(_header "xcb/xcb_util.h")
+ set(_lib "xcb-util")
+ elseif("${_comp}" STREQUAL "XFIXES")
+ set(_header "xcb/xfixes.h")
+ set(_lib "xcb-xfixes")
+ elseif("${_comp}" STREQUAL "XTEST")
+ set(_header "xcb/xtest.h")
+ set(_lib "xcb-xtest")
+ elseif("${_comp}" STREQUAL "XV")
+ set(_header "xcb/xv.h")
+ set(_lib "xcb-xv")
+ endif()
+
+ find_path(XCB_${_comp}_INCLUDE_DIR NAMES ${_header} HINTS ${PKG_XCB_INCLUDE_DIRS})
+ find_library(XCB_${_comp}_LIBRARY NAMES ${_lib} HINTS ${PKG_XCB_LIBRARY_DIRS})
+
+ if(XCB_${_comp}_INCLUDE_DIR AND XCB_${_comp}_LIBRARY)
+ list(APPEND XCB_INCLUDE_DIRS ${XCB_${_comp}_INCLUDE_DIR})
+ list(APPEND XCB_LIBRARIES ${XCB_${_comp}_LIBRARY})
+ if (NOT XCB_FIND_QUIETLY)
+ message(STATUS "XCB[${_comp}]: Found component ${_comp}")
+ endif()
+ endif()
+
+ if(XCB_FIND_REQUIRED_${_comp})
+ list(APPEND requiredComponents XCB_${_comp}_FOUND)
+ endif()
+
+ find_package_handle_standard_args(XCB_${_comp} DEFAULT_MSG XCB_${_comp}_LIBRARY XCB_${_comp}_INCLUDE_DIR)
+
+ mark_as_advanced(XCB_${_comp}_LIBRARY XCB_${_comp}_INCLUDE_DIR)
+
+ # compatibility for old variable naming
+ set(XCB_${_comp}_INCLUDE_DIRS ${XCB_${_comp}_INCLUDE_DIR})
+ set(XCB_${_comp}_LIBRARIES ${XCB_${_comp}_LIBRARY})
+endmacro()
IF (NOT WIN32)
- IF (XCB_INCLUDE_DIR AND XCB_LIBRARIES)
- # In the cache already
- SET(XCB_FIND_QUIETLY TRUE)
- ENDIF (XCB_INCLUDE_DIR AND XCB_LIBRARIES)
-
- # Use pkg-config to get the directories and then use these values
- # in the FIND_PATH() and FIND_LIBRARY() calls
- FIND_PACKAGE(PkgConfig)
- PKG_CHECK_MODULES(PKG_XCB QUIET xcb xcb-util xcb-composite xcb-xfixes xcb-damage xcb-render xcb-randr
- xcb-shape xcb-dri2 xcb-glx xcb-shm xcb-xv xcb-sync
- xcb-xtest xcb-icccm xcb-ewmh xcb-image xcb-renderutil xcb-keysyms)
-
- SET(XCB_DEFINITIONS ${PKG_XCB_CFLAGS})
-
- FIND_PATH(XCB_XCB_INCLUDE_DIR NAMES xcb/xcb.h HINTS ${PKG_XCB_INCLUDE_DIRS})
- FIND_PATH(XCB_UTIL_INCLUDE_DIR NAMES xcb/xcb_util.h HINTS ${PKG_XCB_INCLUDE_DIRS})
- FIND_PATH(XCB_COMPOSITE_INCLUDE_DIR NAMES xcb/composite.h HINTS ${PKG_XCB_INCLUDE_DIRS})
- FIND_PATH(XCB_XFIXES_INCLUDE_DIR NAMES xcb/xfixes.h HINTS ${PKG_XCB_INCLUDE_DIRS})
- FIND_PATH(XCB_DAMAGE_INCLUDE_DIR NAMES xcb/damage.h HINTS ${PKG_XCB_INCLUDE_DIRS})
- FIND_PATH(XCB_RENDER_INCLUDE_DIR NAMES xcb/render.h HINTS ${PKG_XCB_INCLUDE_DIRS})
- FIND_PATH(XCB_RANDR_INCLUDE_DIR NAMES xcb/randr.h HINTS ${PKG_XCB_INCLUDE_DIRS})
- FIND_PATH(XCB_SHAPE_INCLUDE_DIR NAMES xcb/shape.h HINTS ${PKG_XCB_INCLUDE_DIRS})
- FIND_PATH(XCB_DRI2_INCLUDE_DIR NAMES xcb/dri2.h HINTS ${PKG_XCB_INCLUDE_DIRS})
- FIND_PATH(XCB_GLX_INCLUDE_DIR NAMES xcb/glx.h HINTS ${PKG_XCB_INCLUDE_DIRS})
- FIND_PATH(XCB_SHM_INCLUDE_DIR NAMES xcb/shm.h HINTS ${PKG_XCB_INCLUDE_DIRS})
- FIND_PATH(XCB_XV_INCLUDE_DIR NAMES xcb/xv.h HINTS ${PKG_XCB_INCLUDE_DIRS})
- FIND_PATH(XCB_SYNC_INCLUDE_DIR NAMES xcb/sync.h HINTS ${PKG_XCB_INCLUDE_DIRS})
- FIND_PATH(XCB_XTEST_INCLUDE_DIR NAMES xcb/xtest.h HINTS ${PKG_XCB_INCLUDE_DIRS})
- FIND_PATH(XCB_ICCCM_INCLUDE_DIR NAMES xcb/xcb_icccm.h HINTS ${PKG_XCB_INCLUDE_DIRS})
- FIND_PATH(XCB_EWMH_INCLUDE_DIR NAMES xcb/xcb_ewmh.h HINTS ${PKG_XCB_INCLUDE_DIRS})
- FIND_PATH(XCB_IMAGE_INCLUDE_DIR NAMES xcb/xcb_image.h HINTS ${PKG_XCB_INCLUDE_DIRS})
- FIND_PATH(XCB_RENDERUTIL_INCLUDE_DIR NAMES xcb/xcb_renderutil.h HINTS ${PKG_XCB_INCLUDE_DIRS})
- FIND_PATH(XCB_KEYSYMS_INCLUDE_DIR NAMES xcb/xcb_keysyms.h HINTS ${PKG_XCB_INCLUDE_DIRS})
-
- FIND_LIBRARY(XCB_XCB_LIBRARIES NAMES xcb HINTS ${PKG_XCB_LIBRARY_DIRS})
- FIND_LIBRARY(XCB_UTIL_LIBRARIES NAMES xcb-util HINTS ${PKG_XCB_LIBRARY_DIRS})
- FIND_LIBRARY(XCB_COMPOSITE_LIBRARIES NAMES xcb-composite HINTS ${PKG_XCB_LIBRARY_DIRS})
- FIND_LIBRARY(XCB_DAMAGE_LIBRARIES NAMES xcb-damage HINTS ${PKG_XCB_LIBRARY_DIRS})
- FIND_LIBRARY(XCB_XFIXES_LIBRARIES NAMES xcb-xfixes HINTS ${PKG_XCB_LIBRARY_DIRS})
- FIND_LIBRARY(XCB_RENDER_LIBRARIES NAMES xcb-render HINTS ${PKG_XCB_LIBRARY_DIRS})
- FIND_LIBRARY(XCB_RANDR_LIBRARIES NAMES xcb-randr HINTS ${PKG_XCB_LIBRARY_DIRS})
- FIND_LIBRARY(XCB_SHAPE_LIBRARIES NAMES xcb-shape HINTS ${PKG_XCB_LIBRARY_DIRS})
- FIND_LIBRARY(XCB_DRI2_LIBRARIES NAMES xcb-dri2 HINTS ${PKG_XCB_LIBRARY_DIRS})
- FIND_LIBRARY(XCB_GLX_LIBRARIES NAMES xcb-glx HINTS ${PKG_XCB_LIBRARY_DIRS})
- FIND_LIBRARY(XCB_SHM_LIBRARIES NAMES xcb-shm HINTS ${PKG_XCB_LIBRARY_DIRS})
- FIND_LIBRARY(XCB_XV_LIBRARIES NAMES xcb-xv HINTS ${PKG_XCB_LIBRARY_DIRS})
- FIND_LIBRARY(XCB_SYNC_LIBRARIES NAMES xcb-sync HINTS ${PKG_XCB_LIBRARY_DIRS})
- FIND_LIBRARY(XCB_XTEST_LIBRARIES NAMES xcb-xtest HINTS ${PKG_XCB_LIBRARY_DIRS})
- FIND_LIBRARY(XCB_ICCCM_LIBRARIES NAMES xcb-icccm HINTS ${PKG_XCB_LIBRARY_DIRS})
- FIND_LIBRARY(XCB_EWMH_LIBRARIES NAMES xcb-ewmh HINTS ${PKG_XCB_LIBRARY_DIRS})
- FIND_LIBRARY(XCB_IMAGE_LIBRARIES NAMES xcb-image HINTS ${PKG_XCB_LIBRARY_DIRS})
- FIND_LIBRARY(XCB_RENDERUTIL_LIBRARIES NAMES xcb-render-util HINTS ${PKG_XCB_LIBRARY_DIRS})
- FIND_LIBRARY(XCB_KEYSYMS_LIBRARIES NAMES xcb-keysyms HINTS ${PKG_XCB_LIBRARY_DIRS})
-
- set(XCB_INCLUDE_DIR ${XCB_XCB_INCLUDE_DIR} ${XCB_UTIL_INCLUDE_DIR} ${XCB_COMPOSITE_INCLUDE_DIR}
- ${XCB_XFIXES_INCLUDE_DIR} ${XCB_DAMAGE_INCLUDE_DIR} ${XCB_RENDER_INCLUDE_DIR}
- ${XCB_RANDR_INCLUDE_DIR} ${XCB_SHAPE_INCLUDE_DIR} ${XCB_DRI2_INCLUDE_DIR}
- ${XCB_GLX_INCLUDE_DIR} ${XCB_SHM_INCLUDE_DIR} ${XCB_XV_INCLUDE_DIR}
- ${XCB_SYNC_INCLUDE_DIR} ${XCB_XTEST_INCLUDE_DIR} ${XCB_ICCCM_INCLUDE_DIR}
- ${XCB_EWMH_INCLUDE_DIR} ${XCB_IMAGE_INCLUDE_DIR} ${XCB_RENDERUTIL_INCLUDE_DIR}
- ${XCB_KEYSYMS_INCLUDE_DIR})
-
- set(XCB_LIBRARIES ${XCB_XCB_LIBRARIES} ${XCB_UTIL_LIBRARIES} ${XCB_COMPOSITE_LIBRARIES}
- ${XCB_XFIXES_LIBRARIES} ${XCB_DAMAGE_LIBRARIES} ${XCB_RENDER_LIBRARIES}
- ${XCB_RANDR_LIBRARIES} ${XCB_SHAPE_LIBRARIES} ${XCB_DRI2_LIBRARIES} ${XCB_GLX_LIBRARIES}
- ${XCB_SHM_LIBRARIES} ${XCB_XV_LIBRARIES} ${XCB_SYNC_LIBRARIES} ${XCB_XTEST_LIBRARIES}
- ${XCB_ICCCM_LIBRARIES} ${XCB_EWMH_LIBRARIES} ${XCB_IMAGE_LIBRARIES}
- ${XCB_RENDERUTIL_LIBRARIES} ${XCB_KEYSYMS_LIBRARIES})
-
- list(REMOVE_DUPLICATES XCB_INCLUDE_DIR)
-
- include(FindPackageHandleStandardArgs)
-
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(XCB DEFAULT_MSG XCB_LIBRARIES XCB_INCLUDE_DIR)
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(XCB_XCB DEFAULT_MSG XCB_XCB_LIBRARIES XCB_XCB_INCLUDE_DIR)
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(XCB_UTIL DEFAULT_MSG XCB_UTIL_LIBRARIES XCB_UTIL_INCLUDE_DIR)
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(XCB_COMPOSITE DEFAULT_MSG XCB_COMPOSITE_LIBRARIES XCB_COMPOSITE_INCLUDE_DIR)
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(XCB_DAMAGE DEFAULT_MSG XCB_DAMAGE_LIBRARIES XCB_DAMAGE_INCLUDE_DIR)
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(XCB_XFIXES DEFAULT_MSG XCB_XFIXES_LIBRARIES XCB_XFIXES_INCLUDE_DIR)
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(XCB_RENDER DEFAULT_MSG XCB_RENDER_LIBRARIES XCB_RENDER_INCLUDE_DIR)
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(XCB_RANDR DEFAULT_MSG XCB_RANDR_LIBRARIES XCB_RANDR_INCLUDE_DIR)
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(XCB_SHAPE DEFAULT_MSG XCB_SHAPE_LIBRARIES XCB_SHAPE_INCLUDE_DIR)
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(XCB_DRI2 DEFAULT_MSG XCB_DRI2_LIBRARIES XCB_DRI2_INCLUDE_DIR)
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(XCB_GLX DEFAULT_MSG XCB_GLX_LIBRARIES XCB_GLX_INCLUDE_DIR)
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(XCB_SHM DEFAULT_MSG XCB_SHM_LIBRARIES XCB_SHM_INCLUDE_DIR)
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(XCB_XV DEFAULT_MSG XCB_XV_LIBRARIES XCB_XV_INCLUDE_DIR)
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(XCB_SYNC DEFAULT_MSG XCB_SYNC_LIBRARIES XCB_SYNC_INCLUDE_DIR)
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(XCB_XTEST DEFAULT_MSG XCB_XTEST_LIBRARIES XCB_XTEST_INCLUDE_DIR)
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(XCB_ICCCM DEFAULT_MSG XCB_ICCCM_LIBRARIES XCB_ICCCM_INCLUDE_DIR)
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(XCB_EWMH DEFAULT_MSG XCB_EWMH_LIBRARIES XCB_EWMH_INCLUDE_DIR)
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(XCB_IMAGE DEFAULT_MSG XCB_IMAGE_LIBRARIES XCB_IMAGE_INCLUDE_DIR)
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(XCB_RENDERUTIL DEFAULT_MSG XCB_RENDERUTIL_LIBRARIES XCB_RENDERUTIL_INCLUDE_DIR)
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(XCB_KEYSYMS DEFAULT_MSG XCB_KEYSYMS_LIBRARIES XCB_KEYSYMS_INCLUDE_DIR)
-
- MARK_AS_ADVANCED(
- XCB_INCLUDE_DIR XCB_LIBRARIES
- XCB_XCB_INCLUDE_DIR XCB_XCB_LIBRARIES
- XCB_UILT_INCLUDE_DIR XCB_UTIL_LIBRARIES
- XCB_COMPOSITE_INCLUDE_DIR XCB_COMPOSITE_LIBRARIES
- XCB_DAMAGE_INCLUDE_DIR XCB_DAMAGE_LIBRARIES
- XCB_XFIXES_INCLUDE_DIR XCB_XFIXES_LIBRARIES
- XCB_RENDER_INCLUDE_DIR XCB_RENDER_LIBRARIES
- XCB_RANDR_INCLUDE_DIR XCB_RANDR_LIBRARIES
- XCB_SHAPE_INCLUDE_DIR XCB_SHAPE_LIBRARIES
- XCB_DRI2_INCLUDE_DIR XCB_DRI2_LIBRARIES
- XCB_GLX_INCLUDE_DIR XCB_GLX_LIBRARIES
- XCB_SHM_INCLUDE_DIR XCB_SHM_LIBRARIES
- XCB_XV_INCLUDE_DIR XCB_XV_LIBRARIES
- XCB_SYNC_INCLUDE_DIR XCB_SYNC_LIBRARIES
- XCB_XTEST_INCLUDE_DIR XCB_XTEST_LIBRARIES
- XCB_ICCCM_INCLUDE_DIR XCB_ICCCM_LIBRARIES
- XCB_EWMH_INCLUDE_DIR XCB_EWMH_LIBRARIES
- XCB_IMAGE_INCLUDE_DIR XCB_IMAGE_LIBRARIES
- XCB_RENDERUTIL_INCLUDE_DIR XCB_RENDERUTIL_LIBRARIES
- XCB_KEYSYMS_INCLUDE_DIR XCB_KEYSYMS_LIBRARIES
- )
+ include(FindPackageHandleStandardArgs)
+ # Use pkg-config to get the directories and then use these values
+ # in the FIND_PATH() and FIND_LIBRARY() calls
+ find_package(PkgConfig)
+ pkg_check_modules(PKG_XCB QUIET ${pkgConfigModules})
+
+ set(XCB_DEFINITIONS ${PKG_XCB_CFLAGS})
+
+ foreach(comp ${comps})
+ _xcb_handle_component(${comp})
+ endforeach()
+
+ if(XCB_INCLUDE_DIRS)
+ list(REMOVE_DUPLICATES XCB_INCLUDE_DIRS)
+ endif()
+
+ find_package_handle_standard_args(XCB DEFAULT_MSG XCB_LIBRARIES XCB_INCLUDE_DIRS ${requiredComponents})
+
+ # compatibility for old variable naming
+ set(XCB_INCLUDE_DIR ${XCB_INCLUDE_DIRS})
ENDIF (NOT WIN32)