aboutsummaryrefslogtreecommitdiff
path: root/externals/libusb/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'externals/libusb/CMakeLists.txt')
-rw-r--r--externals/libusb/CMakeLists.txt66
1 files changed, 37 insertions, 29 deletions
diff --git a/externals/libusb/CMakeLists.txt b/externals/libusb/CMakeLists.txt
index ec7724e874..0a20ca94b8 100644
--- a/externals/libusb/CMakeLists.txt
+++ b/externals/libusb/CMakeLists.txt
@@ -1,7 +1,15 @@
# SPDX-FileCopyrightText: 2020 yuzu Emulator Project
# 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_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.")
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
if (MSYS)
@@ -118,27 +126,27 @@ else() # MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
endif()
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)
if(WIN32)
target_include_directories(usb
BEFORE
PUBLIC
- libusb/libusb
+ ${libusb_SOURCE_DIR}/libusb
PRIVATE
"${CMAKE_CURRENT_BINARY_DIR}"
)
if (NOT MINGW)
- target_include_directories(usb BEFORE PRIVATE libusb/msvc)
+ target_include_directories(usb BEFORE PRIVATE ${libusb_SOURCE_DIR}/msvc)
endif()
else()
@@ -148,7 +156,7 @@ else() # MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
BEFORE
PUBLIC
- libusb/libusb
+ ${libusb_SOURCE_DIR}/libusb
PRIVATE
"${CMAKE_CURRENT_BINARY_DIR}"
@@ -157,15 +165,15 @@ else() # MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
if(WIN32 OR CYGWIN)
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)
elseif(APPLE)
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(IOKIT_LIBRARY IOKit)
@@ -178,20 +186,20 @@ else() # MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set(OS_DARWIN TRUE)
elseif(ANDROID)
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)
target_link_libraries(usb PRIVATE ${LOG_LIBRARY})
set(OS_LINUX TRUE)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
target_sources(usb PRIVATE
- libusb/libusb/os/linux_usbfs.c
+ ${libusb_SOURCE_DIR}/libusb/os/linux_usbfs.c
)
find_package(Libudev)
if(LIBUDEV_FOUND)
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_include_directories(usb PRIVATE "${LIBUDEV_INCLUDE_DIR}")
@@ -199,26 +207,26 @@ else() # MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set(USE_UDEV TRUE)
else()
target_sources(usb PRIVATE
- libusb/libusb/os/linux_netlink.c
+ ${libusb_SOURCE_DIR}/libusb/os/linux_netlink.c
)
endif()
set(OS_LINUX TRUE)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "NetBSD")
target_sources(usb PRIVATE
- libusb/libusb/os/netbsd_usb.c
+ ${libusb_SOURCE_DIR}/libusb/os/netbsd_usb.c
)
set(OS_NETBSD TRUE)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD")
target_sources(usb PRIVATE
- libusb/libusb/os/openbsd_usb.c
+ ${libusb_SOURCE_DIR}/libusb/os/openbsd_usb.c
)
set(OS_OPENBSD TRUE)
endif()
if(UNIX)
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)
if(THREADS_HAVE_PTHREAD_ARG)
@@ -230,8 +238,8 @@ else() # MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set(THREADS_POSIX TRUE)
elseif(WIN32)
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()