Skip to content
Snippets Groups Projects
Select Git revision
  • f8d80a936fd219ecd3dfe0e9236acd11aef7bb41
  • for-vairdraw default protected
  • multi-context-windows
3 results

FindWayland.cmake

Blame
    • Jonas Ådahl's avatar
      8e999963
      Introduce experimental Wayland backend · 8e999963
      Jonas Ådahl authored
      This patch introduces a new backend that enables GLFW applications to
      run on Wayland. For now, only output is supported (windowed and
      fullscreen). Pointer cursor management, input devices, clipboard etc are
      not supported yet.
      
      There are some concepts that can not be supported, more specifically
      glfwSetWindowPos, glfwGetWindowPos and glfwSetCursorPos, as they are not
      supported by Wayland.
      
      This patch also changes the time and joystick implementations used by the
      X11 backend to be shared between the Wayland backend and the X11 backend.
      8e999963
      History
      Introduce experimental Wayland backend
      Jonas Ådahl authored
      This patch introduces a new backend that enables GLFW applications to
      run on Wayland. For now, only output is supported (windowed and
      fullscreen). Pointer cursor management, input devices, clipboard etc are
      not supported yet.
      
      There are some concepts that can not be supported, more specifically
      glfwSetWindowPos, glfwGetWindowPos and glfwSetCursorPos, as they are not
      supported by Wayland.
      
      This patch also changes the time and joystick implementations used by the
      X11 backend to be shared between the Wayland backend and the X11 backend.
    FindWayland.cmake 2.78 KiB
    # Try to find Wayland on a Unix system
    #
    # This will define:
    #
    #   WAYLAND_FOUND       - True if Wayland is found
    #   WAYLAND_LIBRARIES   - Link these to use Wayland
    #   WAYLAND_INCLUDE_DIR - Include directory for Wayland
    #   WAYLAND_DEFINITIONS - Compiler flags for using Wayland
    #
    # In addition the following more fine grained variables will be defined:
    #
    #   WAYLAND_CLIENT_FOUND  WAYLAND_CLIENT_INCLUDE_DIR  WAYLAND_CLIENT_LIBRARIES
    #   WAYLAND_SERVER_FOUND  WAYLAND_SERVER_INCLUDE_DIR  WAYLAND_SERVER_LIBRARIES
    #   WAYLAND_EGL_FOUND     WAYLAND_EGL_INCLUDE_DIR     WAYLAND_EGL_LIBRARIES
    #
    # 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.
    
    IF (NOT WIN32)
      IF (WAYLAND_INCLUDE_DIR AND WAYLAND_LIBRARIES)
        # In the cache already
        SET(WAYLAND_FIND_QUIETLY TRUE)
      ENDIF ()
    
      # 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_WAYLAND QUIET wayland-client wayland-server wayland-egl)
    
      SET(WAYLAND_DEFINITIONS ${PKG_WAYLAND_CFLAGS})
    
      FIND_PATH(WAYLAND_CLIENT_INCLUDE_DIR  NAMES wayland-client.h HINTS ${PKG_WAYLAND_INCLUDE_DIRS})
      FIND_PATH(WAYLAND_SERVER_INCLUDE_DIR  NAMES wayland-server.h HINTS ${PKG_WAYLAND_INCLUDE_DIRS})
      FIND_PATH(WAYLAND_EGL_INCLUDE_DIR     NAMES wayland-egl.h    HINTS ${PKG_WAYLAND_INCLUDE_DIRS})
    
      FIND_LIBRARY(WAYLAND_CLIENT_LIBRARIES NAMES wayland-client   HINTS ${PKG_WAYLAND_LIBRARY_DIRS})
      FIND_LIBRARY(WAYLAND_SERVER_LIBRARIES NAMES wayland-server   HINTS ${PKG_WAYLAND_LIBRARY_DIRS})
      FIND_LIBRARY(WAYLAND_EGL_LIBRARIES    NAMES wayland-egl      HINTS ${PKG_WAYLAND_LIBRARY_DIRS})
    
      set(WAYLAND_INCLUDE_DIR ${WAYLAND_CLIENT_INCLUDE_DIR} ${WAYLAND_SERVER_INCLUDE_DIR} ${WAYLAND_EGL_INCLUDE_DIR})
    
      set(WAYLAND_LIBRARIES ${WAYLAND_CLIENT_LIBRARIES} ${WAYLAND_SERVER_LIBRARIES} ${WAYLAND_EGL_LIBRARIES})
    
      list(REMOVE_DUPLICATES WAYLAND_INCLUDE_DIR)
    
      include(FindPackageHandleStandardArgs)
    
      FIND_PACKAGE_HANDLE_STANDARD_ARGS(WAYLAND_CLIENT  DEFAULT_MSG  WAYLAND_CLIENT_LIBRARIES  WAYLAND_CLIENT_INCLUDE_DIR)
      FIND_PACKAGE_HANDLE_STANDARD_ARGS(WAYLAND_SERVER  DEFAULT_MSG  WAYLAND_SERVER_LIBRARIES  WAYLAND_SERVER_INCLUDE_DIR)
      FIND_PACKAGE_HANDLE_STANDARD_ARGS(WAYLAND_EGL     DEFAULT_MSG  WAYLAND_EGL_LIBRARIES     WAYLAND_EGL_INCLUDE_DIR)
      FIND_PACKAGE_HANDLE_STANDARD_ARGS(WAYLAND         DEFAULT_MSG  WAYLAND_LIBRARIES         WAYLAND_INCLUDE_DIR)
    
      MARK_AS_ADVANCED(
            WAYLAND_INCLUDE_DIR         WAYLAND_LIBRARIES
            WAYLAND_CLIENT_INCLUDE_DIR  WAYLAND_CLIENT_LIBRARIES
            WAYLAND_SERVER_INCLUDE_DIR  WAYLAND_SERVER_LIBRARIES
            WAYLAND_EGL_INCLUDE_DIR     WAYLAND_EGL_LIBRARIES
      )
    
    ENDIF ()