Merge pull request #25883 from CrystalP/fix-slowscan
[xbmc.git] / cmake / modules / FindWaylandpp.cmake
blobcc9d0827fc906513108090d70a3c640f3ed24b1f
1 # FindWaylandpp
2 # -------------
3 # Finds the waylandpp library
5 # This will define the following target:
7 #   ${APP_NAME_LC}::Waylandpp   - The waylandpp library
9 if(NOT TARGET ${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME})
10   find_package(PkgConfig)
11   pkg_check_modules(PC_WAYLANDPP wayland-client++ wayland-egl++ wayland-cursor++ QUIET)
13   if(PC_WAYLANDPP_FOUND)
14     pkg_get_variable(PC_WAYLANDPP_PKGDATADIR wayland-client++ pkgdatadir)
15   else()
16     message(SEND_ERROR "wayland-client++ not found via pkg-config")
17   endif()
19   find_path(WAYLANDPP_INCLUDE_DIR wayland-client.hpp HINTS ${PC_WAYLANDPP_INCLUDEDIR})
21   find_library(WAYLANDPP_CLIENT_LIBRARY NAMES wayland-client++
22                                         HINTS ${PC_WAYLANDPP_LIBRARY_DIRS})
24   find_library(WAYLANDPP_CURSOR_LIBRARY NAMES wayland-cursor++
25                                         HINTS ${PC_WAYLANDPP_LIBRARY_DIRS})
27   find_library(WAYLANDPP_EGL_LIBRARY NAMES wayland-egl++
28                                      HINTS ${PC_WAYLANDPP_LIBRARY_DIRS})
30   if(KODI_DEPENDSBUILD)
31     pkg_check_modules(PC_WAYLANDC wayland-client wayland-egl wayland-cursor QUIET)
33     if(PREFER_TOOLCHAIN_PATH)
34       set(WAYLAND_SEARCH_PATH ${PREFER_TOOLCHAIN_PATH}
35                               NO_DEFAULT_PATH
36                               PATH_SUFFIXES usr/lib)
37     else()
38       set(WAYLAND_SEARCH_PATH ${PC_WAYLANDC_LIBRARY_DIRS})
39     endif()
41     find_library(WAYLANDC_CLIENT_LIBRARY NAMES wayland-client
42                                          HINTS ${WAYLAND_SEARCH_PATH}
43                                          REQUIRED)
44     find_library(WAYLANDC_CURSOR_LIBRARY NAMES wayland-cursor
45                                          HINTS ${WAYLAND_SEARCH_PATH}
46                                          REQUIRED)
47     find_library(WAYLANDC_EGL_LIBRARY NAMES wayland-egl
48                                       HINTS ${WAYLAND_SEARCH_PATH}
49                                       REQUIRED)
51     set(WAYLANDPP_STATIC_DEPS ${WAYLANDC_CLIENT_LIBRARY}
52                               ${WAYLANDC_CURSOR_LIBRARY}
53                               ${WAYLANDC_EGL_LIBRARY})
54   endif()
56   # Promote to cache variables so all code can access it
57   set(WAYLANDPP_PROTOCOLS_DIR "${PC_WAYLANDPP_PKGDATADIR}/protocols" CACHE INTERNAL "")
59   include (FindPackageHandleStandardArgs)
60   find_package_handle_standard_args(Waylandpp
61                                     REQUIRED_VARS WAYLANDPP_INCLUDE_DIR
62                                                   WAYLANDPP_CLIENT_LIBRARY
63                                                   WAYLANDPP_CURSOR_LIBRARY
64                                                   WAYLANDPP_EGL_LIBRARY
65                                     VERSION_VAR WAYLANDPP_wayland-client++_VERSION)
67   if(WAYLANDPP_FOUND)
69     find_package(WaylandPPScanner REQUIRED)
71     set(WAYLANDPP_INCLUDE_DIRS ${WAYLANDPP_INCLUDE_DIR})
72     set(WAYLANDPP_LIBRARIES 
73                             ${WAYLANDPP_STATIC_DEPS})
75     if(KODI_DEPENDSBUILD)
76       add_library(${APP_NAME_LC}::waylandc-egl UNKNOWN IMPORTED)
77       set_target_properties(${APP_NAME_LC}::waylandc-egl PROPERTIES
78                                                           IMPORTED_LOCATION "${WAYLANDC_EGL_LIBRARY}")
80       add_library(${APP_NAME_LC}::waylandc-cursor UNKNOWN IMPORTED)
81       set_target_properties(${APP_NAME_LC}::waylandc-cursor PROPERTIES
82                                                              IMPORTED_LOCATION "${WAYLANDC_CURSOR_LIBRARY}")
84       add_library(${APP_NAME_LC}::waylandc-client UNKNOWN IMPORTED)
85       set_target_properties(${APP_NAME_LC}::waylandc-client PROPERTIES
86                                                              IMPORTED_LOCATION "${WAYLANDC_CLIENT_LIBRARY}")
87     endif()
89     add_library(${APP_NAME_LC}::waylandpp-egl UNKNOWN IMPORTED)
90     set_target_properties(${APP_NAME_LC}::waylandpp-egl PROPERTIES
91                                                         IMPORTED_LOCATION "${WAYLANDPP_EGL_LIBRARY}"
92                                                         INTERFACE_INCLUDE_DIRECTORIES "${WAYLANDPP_INCLUDE_DIR}")
94     add_library(${APP_NAME_LC}::waylandpp-cursor UNKNOWN IMPORTED)
95     set_target_properties(${APP_NAME_LC}::waylandpp-cursor PROPERTIES
96                                                            IMPORTED_LOCATION "${WAYLANDPP_CURSOR_LIBRARY}"
97                                                            INTERFACE_INCLUDE_DIRECTORIES "${WAYLANDPP_INCLUDE_DIR}")
99     add_library(${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME} UNKNOWN IMPORTED)
100     set_target_properties(${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME} PROPERTIES
101                                                                      IMPORTED_LOCATION "${WAYLANDPP_CLIENT_LIBRARY}"
102                                                                      INTERFACE_INCLUDE_DIRECTORIES "${WAYLANDPP_INCLUDE_DIR}"
103                                                                      INTERFACE_COMPILE_DEFINITIONS HAVE_WAYLAND
104                                                                      INTERFACE_LINK_LIBRARIES "${APP_NAME_LC}::waylandpp-cursor;${APP_NAME_LC}::waylandpp-egl;$<TARGET_NAME_IF_EXISTS:${APP_NAME_LC}::waylandc-egl>;$<TARGET_NAME_IF_EXISTS:${APP_NAME_LC}::waylandc-cursor>;$<TARGET_NAME_IF_EXISTS:${APP_NAME_LC}::waylandc-client>")
106   endif()
107 endif()