| # Distributed under the OSI-approved BSD 3-Clause License. See accompanying |
| # file LICENSE.rst or https://cmake.org/licensing for details. |
| |
| #[=======================================================================[.rst: |
| FindLibinput |
| ------------ |
| |
| .. versionadded:: 3.14 |
| |
| Finds the libinput library which handles input devices in Wayland compositors |
| and provides a generic X.Org input driver: |
| |
| .. code-block:: cmake |
| |
| find_package(Libinput [<version>] [...]) |
| |
| Imported Targets |
| ^^^^^^^^^^^^^^^^ |
| |
| This module provides the following :ref:`Imported Targets`: |
| |
| ``Libinput::Libinput`` |
| Target encapsulating the libinput library usage requirements, available only |
| if library is found. |
| |
| Result Variables |
| ^^^^^^^^^^^^^^^^ |
| |
| This module defines the following variables: |
| |
| ``Libinput_FOUND`` |
| Boolean indicating whether the (requested version of) libinput library was |
| found. |
| ``Libinput_VERSION`` |
| The version of the libinput found. |
| ``Libinput_LIBRARIES`` |
| The libraries to link against to use the libinput library. |
| ``Libinput_INCLUDE_DIRS`` |
| The include directories containing headers needed to use the libinput library. |
| ``Libinput_COMPILE_OPTIONS`` |
| Compile options needed to use the libinput library. These can be passed to |
| the :command:`target_compile_options` command, when not using the |
| ``Libinput::Libinput`` imported target. |
| |
| Examples |
| ^^^^^^^^ |
| |
| Finding the libinput library and linking it to a project target: |
| |
| .. code-block:: cmake |
| |
| find_package(Libinput) |
| target_link_libraries(project_target PRIVATE Libinput::Libinput) |
| #]=======================================================================] |
| |
| |
| # Use pkg-config to get the directories and then use these values |
| # in the FIND_PATH() and FIND_LIBRARY() calls |
| find_package(PkgConfig QUIET) |
| if(PkgConfig_FOUND) |
| pkg_check_modules(PKG_Libinput QUIET libinput) |
| endif() |
| |
| set(Libinput_COMPILE_OPTIONS ${PKG_Libinput_CFLAGS_OTHER}) |
| set(Libinput_VERSION ${PKG_Libinput_VERSION}) |
| |
| find_path(Libinput_INCLUDE_DIR |
| NAMES |
| libinput.h |
| HINTS |
| ${PKG_Libinput_INCLUDE_DIRS} |
| ) |
| find_library(Libinput_LIBRARY |
| NAMES |
| input |
| HINTS |
| ${PKG_Libinput_LIBRARY_DIRS} |
| ) |
| |
| include(FindPackageHandleStandardArgs) |
| find_package_handle_standard_args(Libinput |
| REQUIRED_VARS |
| Libinput_LIBRARY |
| Libinput_INCLUDE_DIR |
| VERSION_VAR |
| Libinput_VERSION |
| ) |
| |
| if(Libinput_FOUND AND NOT TARGET Libinput::Libinput) |
| add_library(Libinput::Libinput UNKNOWN IMPORTED) |
| set_target_properties(Libinput::Libinput PROPERTIES |
| IMPORTED_LOCATION "${Libinput_LIBRARY}" |
| INTERFACE_COMPILE_OPTIONS "${Libinput_COMPILE_OPTIONS}" |
| INTERFACE_INCLUDE_DIRECTORIES "${Libinput_INCLUDE_DIR}" |
| ) |
| endif() |
| |
| mark_as_advanced(Libinput_LIBRARY Libinput_INCLUDE_DIR) |
| |
| if(Libinput_FOUND) |
| set(Libinput_LIBRARIES ${Libinput_LIBRARY}) |
| set(Libinput_INCLUDE_DIRS ${Libinput_INCLUDE_DIR}) |
| endif() |