|
|
@ -1,7 +1,15 @@ |
|
|
# SPDX-FileCopyrightText: 2020 yuzu Emulator Project |
|
|
# SPDX-FileCopyrightText: 2020 yuzu Emulator Project |
|
|
# SPDX-License-Identifier: GPL-2.0-or-later |
|
|
# SPDX-License-Identifier: GPL-2.0-or-later |
|
|
|
|
|
|
|
|
if (MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux") OR APPLE) |
|
|
|
|
|
|
|
|
include(CPMUtil) |
|
|
|
|
|
|
|
|
|
|
|
AddJsonPackage(libusb) |
|
|
|
|
|
|
|
|
|
|
|
if (NOT libusb_ADDED) |
|
|
|
|
|
return() |
|
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
|
|
if (MINGW OR PLATFORM_LINUX OR APPLE) |
|
|
set(LIBUSB_FOUND ON CACHE BOOL "libusb is present" FORCE) |
|
|
set(LIBUSB_FOUND ON CACHE BOOL "libusb is present" FORCE) |
|
|
set(LIBUSB_VERSION "1.0.24" CACHE STRING "libusb version string" FORCE) |
|
|
set(LIBUSB_VERSION "1.0.24" CACHE STRING "libusb version string" FORCE) |
|
|
|
|
|
|
|
|
@ -19,8 +27,8 @@ if (MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux") OR APPLE) |
|
|
message(FATAL_ERROR "Required program `libtoolize` not found.") |
|
|
message(FATAL_ERROR "Required program `libtoolize` not found.") |
|
|
endif() |
|
|
endif() |
|
|
|
|
|
|
|
|
set(LIBUSB_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/libusb") |
|
|
|
|
|
set(LIBUSB_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libusb") |
|
|
|
|
|
|
|
|
set(LIBUSB_PREFIX "${libusb_BINARY_DIR}") |
|
|
|
|
|
set(LIBUSB_SRC_DIR "${libusb_SOURCE_DIR}") |
|
|
|
|
|
|
|
|
# Workarounds for MSYS/MinGW |
|
|
# Workarounds for MSYS/MinGW |
|
|
if (MSYS) |
|
|
if (MSYS) |
|
|
@ -118,27 +126,27 @@ else() # MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux") |
|
|
endif() |
|
|
endif() |
|
|
|
|
|
|
|
|
add_library(usb |
|
|
add_library(usb |
|
|
libusb/libusb/core.c |
|
|
|
|
|
libusb/libusb/core.c |
|
|
|
|
|
libusb/libusb/descriptor.c |
|
|
|
|
|
libusb/libusb/hotplug.c |
|
|
|
|
|
libusb/libusb/io.c |
|
|
|
|
|
libusb/libusb/strerror.c |
|
|
|
|
|
libusb/libusb/sync.c |
|
|
|
|
|
|
|
|
${libusb_SOURCE_DIR}/libusb/core.c |
|
|
|
|
|
${libusb_SOURCE_DIR}/libusb/core.c |
|
|
|
|
|
${libusb_SOURCE_DIR}/libusb/descriptor.c |
|
|
|
|
|
${libusb_SOURCE_DIR}/libusb/hotplug.c |
|
|
|
|
|
${libusb_SOURCE_DIR}/libusb/io.c |
|
|
|
|
|
${libusb_SOURCE_DIR}/libusb/strerror.c |
|
|
|
|
|
${libusb_SOURCE_DIR}/libusb/sync.c |
|
|
) |
|
|
) |
|
|
set_target_properties(usb PROPERTIES VERSION 1.0.24) |
|
|
set_target_properties(usb PROPERTIES VERSION 1.0.24) |
|
|
if(WIN32) |
|
|
if(WIN32) |
|
|
target_include_directories(usb |
|
|
target_include_directories(usb |
|
|
BEFORE |
|
|
BEFORE |
|
|
PUBLIC |
|
|
PUBLIC |
|
|
libusb/libusb |
|
|
|
|
|
|
|
|
${libusb_SOURCE_DIR}/libusb |
|
|
|
|
|
|
|
|
PRIVATE |
|
|
PRIVATE |
|
|
"${CMAKE_CURRENT_BINARY_DIR}" |
|
|
"${CMAKE_CURRENT_BINARY_DIR}" |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
|
if (NOT MINGW) |
|
|
if (NOT MINGW) |
|
|
target_include_directories(usb BEFORE PRIVATE libusb/msvc) |
|
|
|
|
|
|
|
|
target_include_directories(usb BEFORE PRIVATE ${libusb_SOURCE_DIR}/msvc) |
|
|
endif() |
|
|
endif() |
|
|
|
|
|
|
|
|
else() |
|
|
else() |
|
|
@ -148,7 +156,7 @@ else() # MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux") |
|
|
BEFORE |
|
|
BEFORE |
|
|
|
|
|
|
|
|
PUBLIC |
|
|
PUBLIC |
|
|
libusb/libusb |
|
|
|
|
|
|
|
|
${libusb_SOURCE_DIR}/libusb |
|
|
|
|
|
|
|
|
PRIVATE |
|
|
PRIVATE |
|
|
"${CMAKE_CURRENT_BINARY_DIR}" |
|
|
"${CMAKE_CURRENT_BINARY_DIR}" |
|
|
@ -157,15 +165,15 @@ else() # MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux") |
|
|
|
|
|
|
|
|
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_usbdk.c |
|
|
|
|
|
libusb/libusb/os/windows_common.c |
|
|
|
|
|
|
|
|
${libusb_SOURCE_DIR}/libusb/os/threads_windows.c |
|
|
|
|
|
${libusb_SOURCE_DIR}/libusb/os/windows_winusb.c |
|
|
|
|
|
${libusb_SOURCE_DIR}/libusb/os/windows_usbdk.c |
|
|
|
|
|
${libusb_SOURCE_DIR}/libusb/os/windows_common.c |
|
|
) |
|
|
) |
|
|
set(OS_WINDOWS TRUE) |
|
|
set(OS_WINDOWS TRUE) |
|
|
elseif(APPLE) |
|
|
elseif(APPLE) |
|
|
target_sources(usb PRIVATE |
|
|
target_sources(usb PRIVATE |
|
|
libusb/libusb/os/darwin_usb.c |
|
|
|
|
|
|
|
|
${libusb_SOURCE_DIR}/libusb/os/darwin_usb.c |
|
|
) |
|
|
) |
|
|
find_library(COREFOUNDATION_LIBRARY CoreFoundation) |
|
|
find_library(COREFOUNDATION_LIBRARY CoreFoundation) |
|
|
find_library(IOKIT_LIBRARY IOKit) |
|
|
find_library(IOKIT_LIBRARY IOKit) |
|
|
@ -178,20 +186,20 @@ else() # MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux") |
|
|
set(OS_DARWIN TRUE) |
|
|
set(OS_DARWIN TRUE) |
|
|
elseif(ANDROID) |
|
|
elseif(ANDROID) |
|
|
target_sources(usb PRIVATE |
|
|
target_sources(usb PRIVATE |
|
|
libusb/libusb/os/linux_usbfs.c |
|
|
|
|
|
libusb/libusb/os/linux_netlink.c |
|
|
|
|
|
|
|
|
${libusb_SOURCE_DIR}/libusb/os/linux_usbfs.c |
|
|
|
|
|
${libusb_SOURCE_DIR}/libusb/os/linux_netlink.c |
|
|
) |
|
|
) |
|
|
find_library(LOG_LIBRARY log) |
|
|
find_library(LOG_LIBRARY log) |
|
|
target_link_libraries(usb PRIVATE ${LOG_LIBRARY}) |
|
|
target_link_libraries(usb PRIVATE ${LOG_LIBRARY}) |
|
|
set(OS_LINUX TRUE) |
|
|
set(OS_LINUX TRUE) |
|
|
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") |
|
|
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") |
|
|
target_sources(usb PRIVATE |
|
|
target_sources(usb PRIVATE |
|
|
libusb/libusb/os/linux_usbfs.c |
|
|
|
|
|
|
|
|
${libusb_SOURCE_DIR}/libusb/os/linux_usbfs.c |
|
|
) |
|
|
) |
|
|
find_package(Libudev) |
|
|
find_package(Libudev) |
|
|
if(LIBUDEV_FOUND) |
|
|
if(LIBUDEV_FOUND) |
|
|
target_sources(usb PRIVATE |
|
|
target_sources(usb PRIVATE |
|
|
libusb/libusb/os/linux_udev.c |
|
|
|
|
|
|
|
|
${libusb_SOURCE_DIR}/libusb/os/linux_udev.c |
|
|
) |
|
|
) |
|
|
target_link_libraries(usb PRIVATE "${LIBUDEV_LIBRARIES}") |
|
|
target_link_libraries(usb PRIVATE "${LIBUDEV_LIBRARIES}") |
|
|
target_include_directories(usb PRIVATE "${LIBUDEV_INCLUDE_DIR}") |
|
|
target_include_directories(usb PRIVATE "${LIBUDEV_INCLUDE_DIR}") |
|
|
@ -199,26 +207,26 @@ else() # MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux") |
|
|
set(USE_UDEV TRUE) |
|
|
set(USE_UDEV TRUE) |
|
|
else() |
|
|
else() |
|
|
target_sources(usb PRIVATE |
|
|
target_sources(usb PRIVATE |
|
|
libusb/libusb/os/linux_netlink.c |
|
|
|
|
|
|
|
|
${libusb_SOURCE_DIR}/libusb/os/linux_netlink.c |
|
|
) |
|
|
) |
|
|
endif() |
|
|
endif() |
|
|
set(OS_LINUX TRUE) |
|
|
set(OS_LINUX TRUE) |
|
|
elseif(${CMAKE_SYSTEM_NAME} MATCHES "NetBSD") |
|
|
elseif(${CMAKE_SYSTEM_NAME} MATCHES "NetBSD") |
|
|
target_sources(usb PRIVATE |
|
|
target_sources(usb PRIVATE |
|
|
libusb/libusb/os/netbsd_usb.c |
|
|
|
|
|
|
|
|
${libusb_SOURCE_DIR}/libusb/os/netbsd_usb.c |
|
|
) |
|
|
) |
|
|
set(OS_NETBSD TRUE) |
|
|
set(OS_NETBSD TRUE) |
|
|
elseif(${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD") |
|
|
elseif(${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD") |
|
|
target_sources(usb PRIVATE |
|
|
target_sources(usb PRIVATE |
|
|
libusb/libusb/os/openbsd_usb.c |
|
|
|
|
|
|
|
|
${libusb_SOURCE_DIR}/libusb/os/openbsd_usb.c |
|
|
) |
|
|
) |
|
|
set(OS_OPENBSD TRUE) |
|
|
set(OS_OPENBSD TRUE) |
|
|
endif() |
|
|
endif() |
|
|
|
|
|
|
|
|
if(UNIX) |
|
|
if(UNIX) |
|
|
target_sources(usb PRIVATE |
|
|
target_sources(usb PRIVATE |
|
|
libusb/libusb/os/events_posix.c |
|
|
|
|
|
libusb/libusb/os/threads_posix.c |
|
|
|
|
|
|
|
|
${libusb_SOURCE_DIR}/libusb/os/events_posix.c |
|
|
|
|
|
${libusb_SOURCE_DIR}/libusb/os/threads_posix.c |
|
|
) |
|
|
) |
|
|
find_package(Threads REQUIRED) |
|
|
find_package(Threads REQUIRED) |
|
|
if(THREADS_HAVE_PTHREAD_ARG) |
|
|
if(THREADS_HAVE_PTHREAD_ARG) |
|
|
@ -230,8 +238,8 @@ else() # MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux") |
|
|
set(THREADS_POSIX TRUE) |
|
|
set(THREADS_POSIX TRUE) |
|
|
elseif(WIN32) |
|
|
elseif(WIN32) |
|
|
target_sources(usb PRIVATE |
|
|
target_sources(usb PRIVATE |
|
|
libusb/libusb/os/events_windows.c |
|
|
|
|
|
libusb/libusb/os/threads_windows.c |
|
|
|
|
|
|
|
|
${libusb_SOURCE_DIR}/libusb/os/events_windows.c |
|
|
|
|
|
${libusb_SOURCE_DIR}/libusb/os/threads_windows.c |
|
|
) |
|
|
) |
|
|
endif() |
|
|
endif() |
|
|
|
|
|
|
|
|
|