From 8e93e9f516d1115380444e0ab0a45e63e3c11fcb Mon Sep 17 00:00:00 2001 From: kenshen112 Date: Sat, 27 Nov 2021 18:07:13 -0700 Subject: [PATCH] CMake: Switch Wayland find script and usage to use imported targets Also clears warning about mismatched names getting sent to FIND_PACKAGE_HANDLE_STANDARD_ARGS --- cmake/FindWayland.cmake | 74 +++++++++++++++++++++-------------------- pcsx2/CMakeLists.txt | 6 +--- 2 files changed, 39 insertions(+), 41 deletions(-) diff --git a/cmake/FindWayland.cmake b/cmake/FindWayland.cmake index 4d37905dc5..aa4aa2a2aa 100644 --- a/cmake/FindWayland.cmake +++ b/cmake/FindWayland.cmake @@ -2,16 +2,13 @@ # # 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 +# Wayland_FOUND - True if Wayland is found # -# 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 +# The following imported targets: +# Wayland::Client - Imported Client +# Wayland::Server - Imported Server +# Wayland::Egl - Imported Egl +# Wayland::Cursor - Imported Cursor # # Copyright (c) 2013 Martin Gräßlin # @@ -24,39 +21,44 @@ IF (NOT WIN32) 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 wayland-cursor) + FIND_PATH(WAYLAND_CLIENT_INCLUDE_DIR NAMES wayland-client.h) + FIND_PATH(WAYLAND_SERVER_INCLUDE_DIR NAMES wayland-server.h) + FIND_PATH(WAYLAND_EGL_INCLUDE_DIR NAMES wayland-egl.h) + FIND_PATH(WAYLAND_CURSOR_INCLUDE_DIR NAMES wayland-cursor.h) - 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_PATH(WAYLAND_CURSOR_INCLUDE_DIR NAMES wayland-cursor.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}) - FIND_LIBRARY(WAYLAND_CURSOR_LIBRARIES NAMES wayland-cursor HINTS ${PKG_WAYLAND_LIBRARY_DIRS}) - - set(WAYLAND_INCLUDE_DIR ${WAYLAND_CLIENT_INCLUDE_DIR} ${WAYLAND_SERVER_INCLUDE_DIR} ${WAYLAND_EGL_INCLUDE_DIR} ${WAYLAND_CURSOR_INCLUDE_DIR}) - - set(WAYLAND_LIBRARIES ${WAYLAND_CLIENT_LIBRARIES} ${WAYLAND_SERVER_LIBRARIES} ${WAYLAND_EGL_LIBRARIES} ${WAYLAND_CURSOR_LIBRARIES}) - - list(REMOVE_DUPLICATES WAYLAND_INCLUDE_DIR) + FIND_LIBRARY(WAYLAND_CLIENT_LIBRARIES NAMES wayland-client) + FIND_LIBRARY(WAYLAND_SERVER_LIBRARIES NAMES wayland-server) + FIND_LIBRARY(WAYLAND_EGL_LIBRARIES NAMES wayland-egl) + FIND_LIBRARY(WAYLAND_CURSOR_LIBRARIES NAMES wayland-cursor) 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_CURSOR DEFAULT_MSG WAYLAND_CURSOR_LIBRARIES WAYLAND_CURSOR_INCLUDE_DIR) - FIND_PACKAGE_HANDLE_STANDARD_ARGS(WAYLAND DEFAULT_MSG WAYLAND_LIBRARIES WAYLAND_INCLUDE_DIR) + # FIND_PACKAGE_HANDLE_STANDARD_ARGS is just meant to find the main package and set package found. Not set variables or find individual libs + FIND_PACKAGE_HANDLE_STANDARD_ARGS(Wayland REQUIRED_VARS + WAYLAND_CLIENT_LIBRARIES WAYLAND_CLIENT_INCLUDE_DIR + WAYLAND_SERVER_LIBRARIES WAYLAND_SERVER_INCLUDE_DIR + WAYLAND_EGL_LIBRARIES WAYLAND_EGL_INCLUDE_DIR + WAYLAND_CURSOR_LIBRARIES WAYLAND_CURSOR_INCLUDE_DIR + ) + + if (WAYLAND_CLIENT_INCLUDE_DIR AND WAYLAND_CLIENT_LIBRARIES AND NOT TARGET Wayland::Client) + add_library(Wayland::Client UNKNOWN IMPORTED) + set_target_properties(Wayland::Client PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${WAYLAND_CLIENT_INCLUDE_DIR}" IMPORTED_LOCATION "${WAYLAND_CLIENT_LIBRARIES}") + endif() + if (WAYLAND_SERVER_INCLUDE_DIR AND WAYLAND_SERVER_LIBRARIES AND NOT TARGET Wayland::Server) + add_library(Wayland::Server UNKNOWN IMPORTED) + set_target_properties(Wayland::Server PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${WAYLAND_SERVER_INCLUDE_DIR}" IMPORTED_LOCATION "${WAYLAND_SERVER_LIBRARIES}") + endif() + if (WAYLAND_EGL_INCLUDE_DIR AND WAYLAND_EGL_LIBRARIES AND NOT TARGET Wayland::Egl) + add_library(Wayland::Egl UNKNOWN IMPORTED) + set_target_properties(Wayland::Egl PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${WAYLAND_EGL_INCLUDE_DIR}" IMPORTED_LOCATION "${WAYLAND_EGL_LIBRARIES}") + endif() + if (WAYLAND_CURSOR_INCLUDE_DIR AND WAYLAND_CURSOR_LIBRARIES AND NOT TARGET Wayland::Cursor) + add_library(Wayland::Cursor UNKNOWN IMPORTED) + set_target_properties(Wayland::Cursor PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${WAYLAND_CURSOR_INCLUDE_DIR}" IMPORTED_LOCATION "${WAYLAND_CURSOR_LIBRARIES}") + endif() 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 diff --git a/pcsx2/CMakeLists.txt b/pcsx2/CMakeLists.txt index e113884075..085532e52a 100644 --- a/pcsx2/CMakeLists.txt +++ b/pcsx2/CMakeLists.txt @@ -70,10 +70,6 @@ if(TARGET SDL::SDL) target_link_libraries(PCSX2_FLAGS INTERFACE SDL::SDL) endif() -if(WAYLAND_CLIENT_FOUND) - target_compile_definitions(PCSX2 PRIVATE WAYLAND_BUILD) -endif() - if(WIN32) # Resources target_sources(PCSX2 PRIVATE @@ -1344,7 +1340,7 @@ if(UNIX AND NOT APPLE) endif() if(WAYLAND_API) target_link_libraries(PCSX2_FLAGS INTERFACE - ${WAYLAND_CLIENT_LIBRARIES} + Wayland::Client ) endif() endif()