Просмотр исходного кода

cmake: prefer system gamemode library

Alexandre Bouvier 2 лет назад
Родитель
Сommit
d2bb9e9729

+ 4 - 0
.reuse/dep5

@@ -151,3 +151,7 @@ License: GPL-3.0-or-later
 Files: externals/stb/*
 Copyright: Sean Barrett
 License: MIT
+
+Files: externals/gamemode/*
+Copyright: Copyright 2017-2019 Feral Interactive
+License: BSD-3-Clause

+ 4 - 0
CMakeLists.txt

@@ -343,6 +343,10 @@ if(ENABLE_OPENSSL)
     find_package(OpenSSL 1.1.1 REQUIRED)
 endif()
 
+if (UNIX AND NOT APPLE)
+    find_package(gamemode 1.7 MODULE)
+endif()
+
 # Please consider this as a stub
 if(ENABLE_QT6 AND Qt6_LOCATION)
     list(APPEND CMAKE_PREFIX_PATH "${Qt6_LOCATION}")

+ 15 - 0
CMakeModules/Findgamemode.cmake

@@ -0,0 +1,15 @@
+# SPDX-FileCopyrightText: 2023 yuzu Emulator Project
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+find_package(PkgConfig QUIET)
+pkg_search_module(GAMEMODE QUIET IMPORTED_TARGET gamemode)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(gamemode
+    REQUIRED_VARS GAMEMODE_INCLUDEDIR
+    VERSION_VAR GAMEMODE_VERSION
+)
+
+if (gamemode_FOUND AND NOT TARGET gamemode::headers)
+    add_library(gamemode::headers ALIAS PkgConfig::GAMEMODE)
+endif()

+ 4 - 2
externals/CMakeLists.txt

@@ -193,8 +193,10 @@ if (ANDROID)
    endif()
 endif()
 
-if (UNIX AND NOT APPLE)
-    add_subdirectory(gamemode)
+if (UNIX AND NOT APPLE AND NOT TARGET gamemode::headers)
+    add_library(gamemode INTERFACE)
+    target_include_directories(gamemode INTERFACE gamemode)
+    add_library(gamemode::headers ALIAS gamemode)
 endif()
 
 # Breakpad

+ 0 - 11
externals/gamemode/CMakeLists.txt

@@ -1,11 +0,0 @@
-# SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-project(gamemode LANGUAGES CXX C)
-
-add_library(gamemode include/gamemode_client.h)
-
-target_link_libraries(gamemode PRIVATE common)
-
-target_include_directories(gamemode PUBLIC include)
-set_target_properties(gamemode PROPERTIES LINKER_LANGUAGE C)

+ 0 - 3
externals/gamemode/include/gamemode_client.h → externals/gamemode/gamemode_client.h

@@ -1,6 +1,3 @@
-// SPDX-FileCopyrightText: Copyright 2017-2019 Feral Interactive
-// SPDX-License-Identifier: BSD-3-Clause
-
 /*
 
 Copyright (c) 2017-2019, Feral Interactive

+ 1 - 1
src/common/CMakeLists.txt

@@ -188,7 +188,7 @@ if (UNIX AND NOT APPLE)
     linux/gamemode.h
   )
 
-  target_link_libraries(common PRIVATE gamemode)
+  target_link_libraries(common PRIVATE gamemode::headers)
 endif()
 
 if(ARCHITECTURE_x86_64)

+ 1 - 1
src/yuzu/CMakeLists.txt

@@ -386,7 +386,7 @@ if (NOT WIN32)
     target_include_directories(yuzu PRIVATE ${Qt${QT_MAJOR_VERSION}Gui_PRIVATE_INCLUDE_DIRS})
 endif()
 if (UNIX AND NOT APPLE)
-    target_link_libraries(yuzu PRIVATE Qt${QT_MAJOR_VERSION}::DBus gamemode)
+    target_link_libraries(yuzu PRIVATE Qt${QT_MAJOR_VERSION}::DBus)
 endif()
 
 target_compile_definitions(yuzu PRIVATE