externals: Link SDL2 statically. (#6461)

This commit is contained in:
Steveice10 2023-05-09 20:08:25 -07:00 committed by GitHub
parent d8e74a9ff4
commit 71a9981430
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 61 additions and 75 deletions

View file

@ -1,5 +0,0 @@
function(copy_citra_SDL_deps target_dir)
include(WindowsCopyFiles)
set(DLL_DEST "${CMAKE_BINARY_DIR}/bin/$<CONFIG>/")
windows_copy_files(${target_dir} ${SDL2_DLL_DIR} ${DLL_DEST} SDL2.dll)
endfunction(copy_citra_SDL_deps)

View file

@ -4,7 +4,6 @@ if(MSVC)
endif() endif()
add_library(usb STATIC EXCLUDE_FROM_ALL add_library(usb STATIC EXCLUDE_FROM_ALL
libusb/libusb/core.c
libusb/libusb/core.c libusb/libusb/core.c
libusb/libusb/descriptor.c libusb/libusb/descriptor.c
libusb/libusb/hotplug.c libusb/libusb/hotplug.c
@ -42,10 +41,9 @@ endif()
if(WIN32 OR CYGWIN) if(WIN32 OR CYGWIN)
target_sources(usb PRIVATE target_sources(usb PRIVATE
libusb/libusb/os/threads_windows.c
libusb/libusb/os/windows_winusb.c libusb/libusb/os/windows_winusb.c
libusb/libusb/os/windows_usbdk.c libusb/libusb/os/windows_usbdk.c
libusb/libusb/os/windows_nt_common.c libusb/libusb/os/windows_common.c
) )
set(OS_WINDOWS TRUE) set(OS_WINDOWS TRUE)
elseif(APPLE) elseif(APPLE)
@ -54,10 +52,12 @@ elseif(APPLE)
) )
find_library(COREFOUNDATION_LIBRARY CoreFoundation) find_library(COREFOUNDATION_LIBRARY CoreFoundation)
find_library(IOKIT_LIBRARY IOKit) find_library(IOKIT_LIBRARY IOKit)
find_library(SECURITY_LIBRARY Security)
find_library(OBJC_LIBRARY objc) find_library(OBJC_LIBRARY objc)
target_link_libraries(usb PRIVATE target_link_libraries(usb PRIVATE
${COREFOUNDATION_LIBRARY} ${COREFOUNDATION_LIBRARY}
${IOKIT_LIBRARY} ${IOKIT_LIBRARY}
${SECURITY_LIBRARY}
${OBJC_LIBRARY} ${OBJC_LIBRARY}
) )
set(OS_DARWIN TRUE) set(OS_DARWIN TRUE)
@ -102,7 +102,7 @@ endif()
if(UNIX) if(UNIX)
target_sources(usb PRIVATE target_sources(usb PRIVATE
libusb/libusb/os/poll_posix.c libusb/libusb/os/events_posix.c
libusb/libusb/os/threads_posix.c libusb/libusb/os/threads_posix.c
) )
find_package(Threads REQUIRED) find_package(Threads REQUIRED)
@ -112,12 +112,13 @@ if(UNIX)
if(CMAKE_THREAD_LIBS_INIT) if(CMAKE_THREAD_LIBS_INIT)
target_link_libraries(usb PRIVATE "${CMAKE_THREAD_LIBS_INIT}") target_link_libraries(usb PRIVATE "${CMAKE_THREAD_LIBS_INIT}")
endif() endif()
set(THREADS_POSIX TRUE) set(PLATFORM_POSIX TRUE)
elseif(WIN32) elseif(WIN32)
target_sources(usb PRIVATE target_sources(usb PRIVATE
libusb/libusb/os/poll_windows.c libusb/libusb/os/events_windows.c
libusb/libusb/os/threads_windows.c libusb/libusb/os/threads_windows.c
) )
set(PLATFORM_WINDOWS TRUE)
endif() endif()
include(CheckFunctionExists) include(CheckFunctionExists)
@ -127,7 +128,8 @@ check_include_files(asm/types.h HAVE_ASM_TYPES_H)
check_function_exists(gettimeofday HAVE_GETTIMEOFDAY) check_function_exists(gettimeofday HAVE_GETTIMEOFDAY)
check_include_files(linux/filter.h HAVE_LINUX_FILTER_H) check_include_files(linux/filter.h HAVE_LINUX_FILTER_H)
check_include_files(linux/netlink.h HAVE_LINUX_NETLINK_H) check_include_files(linux/netlink.h HAVE_LINUX_NETLINK_H)
check_include_files(poll.h HAVE_POLL_H) check_function_exists(eventfd HAVE_EVENTFD)
check_function_exists(timerfd_create HAVE_TIMERFD)
check_include_files(signal.h HAVE_SIGNAL_H) check_include_files(signal.h HAVE_SIGNAL_H)
check_include_files(strings.h HAVE_STRINGS_H) check_include_files(strings.h HAVE_STRINGS_H)
check_type_size("struct timespec" STRUCT_TIMESPEC) check_type_size("struct timespec" STRUCT_TIMESPEC)
@ -136,17 +138,6 @@ check_include_files(syslog.h HAVE_SYSLOG_H)
check_include_files(sys/socket.h HAVE_SYS_SOCKET_H) check_include_files(sys/socket.h HAVE_SYS_SOCKET_H)
check_include_files(sys/time.h HAVE_SYS_TIME_H) check_include_files(sys/time.h HAVE_SYS_TIME_H)
check_include_files(sys/types.h HAVE_SYS_TYPES_H) check_include_files(sys/types.h HAVE_SYS_TYPES_H)
check_function_exists(clock_gettime HAVE_CLOCK_GETTIME)
set(CMAKE_EXTRA_INCLUDE_FILES poll.h)
check_type_size("nfds_t" nfds_t)
unset(CMAKE_EXTRA_INCLUDE_FILES)
if(HAVE_NFDS_T)
set(POLL_NFDS_TYPE "nfds_t")
else()
set(POLL_NFDS_TYPE "unsigned int")
endif()
check_include_files(sys/timerfd.h USBI_TIMERFD_AVAILABLE)
configure_file(config.h.in config.h) configure_file(config.h.in config.h)

View file

@ -26,8 +26,11 @@
/* Define to 1 if you have the <linux/netlink.h> header file. */ /* Define to 1 if you have the <linux/netlink.h> header file. */
#cmakedefine HAVE_LINUX_NETLINK_H 1 #cmakedefine HAVE_LINUX_NETLINK_H 1
/* Define to 1 if you have the <poll.h> header file. */ /* Define to 1 if you have eventfd support. */
#cmakedefine HAVE_POLL_H 1 #cmakedefine HAVE_EVENTFD 1
/* Define to 1 if you have timerfd support. */
#cmakedefine HAVE_TIMERFD 1
/* Define to 1 if you have the <signal.h> header file. */ /* Define to 1 if you have the <signal.h> header file. */
#cmakedefine HAVE_SIGNAL_H 1 #cmakedefine HAVE_SIGNAL_H 1
@ -53,6 +56,9 @@
/* Define to 1 if you have the <sys/types.h> header file. */ /* Define to 1 if you have the <sys/types.h> header file. */
#cmakedefine HAVE_SYS_TYPES_H 1 #cmakedefine HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the 'clock_gettime' function. */
#cmakedefine HAVE_CLOCK_GETTIME 1
/* Darwin backend */ /* Darwin backend */
#cmakedefine OS_DARWIN 1 #cmakedefine OS_DARWIN 1
@ -68,14 +74,11 @@
/* Windows backend */ /* Windows backend */
#cmakedefine OS_WINDOWS 1 #cmakedefine OS_WINDOWS 1
/* type of second poll() argument */ /* Use POSIX Platform */
#define POLL_NFDS_TYPE @POLL_NFDS_TYPE@ #cmakedefine PLATFORM_POSIX
/* Use POSIX Threads */ /* Use Windows Platform */
#cmakedefine THREADS_POSIX #cmakedefine PLATFORM_WINDOWS
/* timerfd headers available */
#cmakedefine USBI_TIMERFD_AVAILABLE 1
/* Enable output to system log */ /* Enable output to system log */
#define USE_SYSTEM_LOGGING_FACILITY 1 #define USE_SYSTEM_LOGGING_FACILITY 1

@ -1 +1 @@
Subproject commit e782eeb2514266f6738e242cdcb18e3ae1ed06fa Subproject commit 54350bd83fbcc9555abc57988d6fd73f3b9e9ff8

View file

@ -1,33 +1,6 @@
# Disable building the stuff we don't need. # Configure static library build
set(SDL_DISKAUDIO OFF CACHE BOOL "") set(SDL_SHARED OFF CACHE BOOL "")
set(SDL_OPENGL ON CACHE BOOL "") set(SDL_STATIC ON CACHE BOOL "")
set(SDL_OPENGLES ON CACHE BOOL "")
set(SDL_OSS OFF CACHE BOOL "")
set(SDL_ALSA OFF CACHE BOOL "")
set(SDL_JACK OFF CACHE BOOL "")
set(SDL_ESD OFF CACHE BOOL "")
set(SDL_PIPEWIRE OFF CACHE BOOL "")
set(SDL_PULSEAUDIO OFF CACHE BOOL "")
set(SDL_ARTS OFF CACHE BOOL "")
set(SDL_NAS OFF CACHE BOOL "")
set(SDL_SNDIO OFF CACHE BOOL "")
set(SDL_FUSIONSOUND OFF CACHE BOOL "")
set(SDL_LIBSAMPLERATE OFF CACHE BOOL "")
set(SDL_X11 OFF CACHE BOOL "")
set(SDL_WAYLAND OFF CACHE BOOL "")
set(SDL_RPI OFF CACHE BOOL "")
set(SDL_COCOA ON CACHE BOOL "")
set(SDL_DIRECTX OFF CACHE BOOL "")
set(SDL_WASAPI OFF CACHE BOOL "")
set(SDL_RENDER_D3D OFF CACHE BOOL "")
set(SDL_RENDER_METAL OFF CACHE BOOL "")
set(SDL_VIVANTE OFF CACHE BOOL "")
set(SDL_VULKAN OFF CACHE BOOL "")
set(SDL_METAL OFF CACHE BOOL "")
set(SDL_KMSDRM OFF CACHE BOOL "")
set(SDL_OFFSCREEN OFF CACHE BOOL "")
set(SDL_SHARED ON CACHE BOOL "")
set(SDL_STATIC OFF CACHE BOOL "")
# Subsystems # Subsystems
set(SDL_ATOMIC ON CACHE BOOL "") set(SDL_ATOMIC ON CACHE BOOL "")

2
externals/sdl2/SDL vendored

@ -1 +1 @@
Subproject commit a1d1946dcba6509f0679f507b57e7b228d32e6f8 Subproject commit ac13ca9ab691e13e8eebe9684740ddcb0d716203

View file

@ -29,13 +29,9 @@ if(UNIX AND NOT APPLE)
install(TARGETS citra RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}/bin") install(TARGETS citra RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
endif() endif()
if (MSVC) if (MSVC AND ENABLE_WEB_SERVICE AND OPENSSL_DLL_DIR)
include(CopyCitraSDLDeps) include(CopyCitraOpensslDeps)
copy_citra_SDL_deps(citra) copy_citra_openssl_deps(citra)
if (ENABLE_WEB_SERVICE AND OPENSSL_DLL_DIR)
include(CopyCitraOpensslDeps)
copy_citra_openssl_deps(citra)
endif()
endif() endif()
if (CITRA_USE_PRECOMPILED_HEADERS) if (CITRA_USE_PRECOMPILED_HEADERS)

View file

@ -341,9 +341,7 @@ endif()
if (MSVC) if (MSVC)
include(CopyCitraQt6Deps) include(CopyCitraQt6Deps)
include(CopyCitraSDLDeps)
copy_citra_Qt6_deps(citra-qt) copy_citra_Qt6_deps(citra-qt)
copy_citra_SDL_deps(citra-qt)
if (ENABLE_WEB_SERVICE AND OPENSSL_DLL_DIR) if (ENABLE_WEB_SERVICE AND OPENSSL_DLL_DIR)
include(CopyCitraOpensslDeps) include(CopyCitraOpensslDeps)
copy_citra_openssl_deps(citra-qt) copy_citra_openssl_deps(citra-qt)

View file

@ -19,13 +19,19 @@
#include "common/param_package.h" #include "common/param_package.h"
#include "input_common/gcadapter/gc_adapter.h" #include "input_common/gcadapter/gc_adapter.h"
// Workaround for older libusb versions not having libusb_init_context.
// libusb_init is deprecated and causes a compile error in newer versions.
#if !defined(LIBUSB_API_VERSION) || (LIBUSB_API_VERSION < 0x0100010A)
#define libusb_init_context(a, b, c) libusb_init(a)
#endif
namespace GCAdapter { namespace GCAdapter {
Adapter::Adapter() { Adapter::Adapter() {
if (usb_adapter_handle != nullptr) { if (usb_adapter_handle != nullptr) {
return; return;
} }
const int init_res = libusb_init(&libusb_ctx); const int init_res = libusb_init_context(&libusb_ctx, nullptr, 0);
if (init_res == LIBUSB_SUCCESS) { if (init_res == LIBUSB_SUCCESS) {
adapter_scan_thread = std::thread(&Adapter::AdapterScanThread, this); adapter_scan_thread = std::thread(&Adapter::AdapterScanThread, this);
} else { } else {

View file

@ -57,11 +57,35 @@ typedef struct {
} SDL_ExtendedGameControllerBind; } SDL_ExtendedGameControllerBind;
#if SDL_VERSION_ATLEAST(2, 26, 0)
/* our hard coded list of mapping support */
typedef enum {
SDL_CONTROLLER_MAPPING_PRIORITY_DEFAULT,
SDL_CONTROLLER_MAPPING_PRIORITY_API,
SDL_CONTROLLER_MAPPING_PRIORITY_USER,
} SDL_ControllerMappingPriority;
typedef struct _ControllerMapping_t {
SDL_JoystickGUID guid;
char* name;
char* mapping;
SDL_ControllerMappingPriority priority;
struct _ControllerMapping_t* next;
} ControllerMapping_t;
#endif
struct _SDL_GameController { struct _SDL_GameController {
#if SDL_VERSION_ATLEAST(2, 26, 0)
const void* magic;
#endif
SDL_Joystick* joystick; /* underlying joystick device */ SDL_Joystick* joystick; /* underlying joystick device */
int ref_count; int ref_count;
const char* name; const char* name;
#if SDL_VERSION_ATLEAST(2, 26, 0)
ControllerMapping_t* mapping;
#endif
int num_bindings; int num_bindings;
SDL_ExtendedGameControllerBind* bindings; SDL_ExtendedGameControllerBind* bindings;
SDL_ExtendedGameControllerBind** last_match_axis; SDL_ExtendedGameControllerBind** last_match_axis;