Преглед изворни кода

On Linux, build SDL2 from externals with HIDAPI support

v1993 пре 5 година
родитељ
комит
648bef235e
2 измењених фајлова са 19 додато и 12 уклоњено
  1. 18 12
      CMakeLists.txt
  2. 1 0
      externals/CMakeLists.txt

+ 18 - 12
CMakeLists.txt

@@ -12,6 +12,8 @@ project(yuzu)
 # OFF by default, but if ENABLE_SDL2 and MSVC are true then ON
 option(ENABLE_SDL2 "Enable the SDL2 frontend" ON)
 CMAKE_DEPENDENT_OPTION(YUZU_USE_BUNDLED_SDL2 "Download bundled SDL2 binaries" ON "ENABLE_SDL2;MSVC" OFF)
+# On Linux system SDL2 is likely to be lacking HIDAPI support which have drawbacks but is needed for SDL motion
+CMAKE_DEPENDENT_OPTION(YUZU_ALLOW_SYSTEM_SDL2 "Try using system SDL2 before fallling back to one from externals" NOT UNIX "ENABLE_SDL2" OFF)
 
 option(ENABLE_QT "Enable the Qt frontend" ON)
 option(ENABLE_QT_TRANSLATION "Enable translations for the Qt frontend" OFF)
@@ -292,20 +294,24 @@ if (ENABLE_SDL2)
         target_link_libraries(SDL2 INTERFACE "${SDL2_LIBRARY}")
         target_include_directories(SDL2 INTERFACE "${SDL2_INCLUDE_DIR}")
     else()
-        find_package(SDL2 2.0.15 QUIET)
-
-        if (SDL2_FOUND)
-            # Some installations don't set SDL2_LIBRARIES
-            if("${SDL2_LIBRARIES}" STREQUAL "")
-                message(WARNING "SDL2_LIBRARIES wasn't set, manually setting to SDL2::SDL2")
-                set(SDL2_LIBRARIES "SDL2::SDL2")
+        if (YUZU_ALLOW_SYSTEM_SDL2)
+            find_package(SDL2 2.0.15 QUIET)
+
+            if (SDL2_FOUND)
+                # Some installations don't set SDL2_LIBRARIES
+                if("${SDL2_LIBRARIES}" STREQUAL "")
+                    message(WARNING "SDL2_LIBRARIES wasn't set, manually setting to SDL2::SDL2")
+                    set(SDL2_LIBRARIES "SDL2::SDL2")
+                endif()
+
+                include_directories(SYSTEM ${SDL2_INCLUDE_DIRS})
+                add_library(SDL2 INTERFACE)
+                target_link_libraries(SDL2 INTERFACE "${SDL2_LIBRARIES}")
+            else()
+                message(STATUS "SDL2 2.0.15 or newer not found, falling back to externals.")
             endif()
-
-            include_directories(SYSTEM ${SDL2_INCLUDE_DIRS})
-            add_library(SDL2 INTERFACE)
-            target_link_libraries(SDL2 INTERFACE "${SDL2_LIBRARIES}")
         else()
-            message(STATUS "SDL2 2.0.15 or newer not found, falling back to externals.")
+            message(STATUS "Using SDL2 from externals.")
         endif()
     endif()
 endif()

+ 1 - 0
externals/CMakeLists.txt

@@ -49,6 +49,7 @@ target_include_directories(unicorn-headers INTERFACE ./unicorn/include)
 if (NOT SDL2_FOUND AND ENABLE_SDL2)
     set(SDL_STATIC ON)
     set(SDL_SHARED OFF)
+    set(OPT_DEF_HIDAPI ON)
     add_subdirectory(SDL EXCLUDE_FROM_ALL)
     add_library(SDL2 ALIAS SDL2-static)
 endif()