Merge pull request #9387 from abouvier/cmake-libusb
cmake: prefer system libusb
This commit is contained in:
commit
e86e144a7c
|
@ -31,8 +31,6 @@ CMAKE_DEPENDENT_OPTION(YUZU_USE_BUNDLED_QT "Download bundled Qt binaries" "${MSV
|
||||||
|
|
||||||
option(ENABLE_WEB_SERVICE "Enable web services (telemetry, etc.)" ON)
|
option(ENABLE_WEB_SERVICE "Enable web services (telemetry, etc.)" ON)
|
||||||
|
|
||||||
option(YUZU_USE_BUNDLED_LIBUSB "Compile bundled libusb" OFF)
|
|
||||||
|
|
||||||
option(YUZU_USE_BUNDLED_FFMPEG "Download/Build bundled FFmpeg" "${WIN32}")
|
option(YUZU_USE_BUNDLED_FFMPEG "Download/Build bundled FFmpeg" "${WIN32}")
|
||||||
|
|
||||||
option(YUZU_USE_QT_MULTIMEDIA "Use QtMultimedia for Camera" OFF)
|
option(YUZU_USE_QT_MULTIMEDIA "Use QtMultimedia for Camera" OFF)
|
||||||
|
@ -202,6 +200,7 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
|
||||||
find_package(enet 1.3)
|
find_package(enet 1.3)
|
||||||
find_package(fmt 9 REQUIRED)
|
find_package(fmt 9 REQUIRED)
|
||||||
find_package(inih)
|
find_package(inih)
|
||||||
|
find_package(libusb 1.0.24)
|
||||||
find_package(lz4 REQUIRED)
|
find_package(lz4 REQUIRED)
|
||||||
find_package(nlohmann_json 3.8 REQUIRED)
|
find_package(nlohmann_json 3.8 REQUIRED)
|
||||||
find_package(Opus 1.3)
|
find_package(Opus 1.3)
|
||||||
|
@ -461,26 +460,6 @@ if (TARGET Boost::boost)
|
||||||
add_library(boost ALIAS Boost::boost)
|
add_library(boost ALIAS Boost::boost)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Ensure libusb is properly configured (based on dolphin libusb include)
|
|
||||||
if(NOT YUZU_USE_BUNDLED_LIBUSB)
|
|
||||||
find_package(PkgConfig)
|
|
||||||
if (PKG_CONFIG_FOUND AND NOT CMAKE_SYSTEM_NAME MATCHES "DragonFly|FreeBSD")
|
|
||||||
pkg_check_modules(LIBUSB QUIET libusb-1.0>=1.0.24)
|
|
||||||
else()
|
|
||||||
find_package(LibUSB)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (LIBUSB_FOUND)
|
|
||||||
add_library(usb INTERFACE)
|
|
||||||
target_include_directories(usb INTERFACE "${LIBUSB_INCLUDEDIR}" "${LIBUSB_INCLUDE_DIRS}")
|
|
||||||
target_link_directories(usb INTERFACE "${LIBUSB_LIBRARY_DIRS}")
|
|
||||||
target_link_libraries(usb INTERFACE "${LIBUSB_LIBRARIES}")
|
|
||||||
else()
|
|
||||||
message(WARNING "libusb not found, falling back to externals")
|
|
||||||
set(YUZU_USE_BUNDLED_LIBUSB ON)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# List of all FFmpeg components required
|
# List of all FFmpeg components required
|
||||||
set(FFmpeg_COMPONENTS
|
set(FFmpeg_COMPONENTS
|
||||||
avcodec
|
avcodec
|
||||||
|
|
|
@ -45,8 +45,8 @@ if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "12" AND CMAKE_CXX_COMPILER
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# libusb
|
# libusb
|
||||||
if (NOT LIBUSB_FOUND OR YUZU_USE_BUNDLED_LIBUSB)
|
if (NOT TARGET libusb::usb)
|
||||||
add_subdirectory(libusb)
|
add_subdirectory(libusb EXCLUDE_FROM_ALL)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# SDL2
|
# SDL2
|
||||||
|
|
|
@ -1,44 +0,0 @@
|
||||||
# SPDX-FileCopyrightText: 2009 Michal Cihar <michal@cihar.com>
|
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
# - Find libusb-1.0 library
|
|
||||||
# This module defines
|
|
||||||
# LIBUSB_INCLUDE_DIR, where to find bluetooth.h
|
|
||||||
# LIBUSB_LIBRARIES, the libraries needed to use libusb-1.0.
|
|
||||||
# LIBUSB_FOUND, If false, do not try to use libusb-1.0.
|
|
||||||
#
|
|
||||||
# vim: expandtab sw=4 ts=4 sts=4:
|
|
||||||
|
|
||||||
if(ANDROID)
|
|
||||||
set(LIBUSB_FOUND FALSE CACHE INTERNAL "libusb-1.0 found")
|
|
||||||
message(STATUS "libusb-1.0 not found.")
|
|
||||||
elseif (NOT LIBUSB_FOUND)
|
|
||||||
pkg_check_modules (LIBUSB_PKG libusb-1.0)
|
|
||||||
|
|
||||||
find_path(LIBUSB_INCLUDE_DIR NAMES libusb.h
|
|
||||||
PATHS
|
|
||||||
${LIBUSB_PKG_INCLUDE_DIRS}
|
|
||||||
/usr/include/libusb-1.0
|
|
||||||
/usr/include
|
|
||||||
/usr/local/include/libusb-1.0
|
|
||||||
/usr/local/include
|
|
||||||
)
|
|
||||||
|
|
||||||
find_library(LIBUSB_LIBRARIES NAMES usb-1.0 usb
|
|
||||||
PATHS
|
|
||||||
${LIBUSB_PKG_LIBRARY_DIRS}
|
|
||||||
/usr/lib
|
|
||||||
/usr/local/lib
|
|
||||||
)
|
|
||||||
|
|
||||||
if(LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES)
|
|
||||||
set(LIBUSB_FOUND TRUE CACHE INTERNAL "libusb-1.0 found")
|
|
||||||
message(STATUS "Found libusb-1.0: ${LIBUSB_INCLUDE_DIR}, ${LIBUSB_LIBRARIES}")
|
|
||||||
else(LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES)
|
|
||||||
set(LIBUSB_FOUND FALSE CACHE INTERNAL "libusb-1.0 found")
|
|
||||||
message(STATUS "libusb-1.0 not found.")
|
|
||||||
endif(LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES)
|
|
||||||
|
|
||||||
mark_as_advanced(LIBUSB_INCLUDE_DIR LIBUSB_LIBRARIES)
|
|
||||||
endif ()
|
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
# SPDX-FileCopyrightText: 2022 Alexandre Bouvier <contact@amb.tf>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
find_package(PkgConfig QUIET)
|
||||||
|
if (PKG_CONFIG_FOUND)
|
||||||
|
pkg_search_module(LIBUSB QUIET IMPORTED_TARGET libusb-1.0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args(libusb
|
||||||
|
REQUIRED_VARS LIBUSB_LINK_LIBRARIES
|
||||||
|
VERSION_VAR LIBUSB_VERSION
|
||||||
|
)
|
||||||
|
|
||||||
|
if (libusb_FOUND AND NOT TARGET libusb::usb)
|
||||||
|
add_library(libusb::usb ALIAS PkgConfig::LIBUSB)
|
||||||
|
endif()
|
|
@ -273,3 +273,5 @@ else() # MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||||
|
|
||||||
configure_file(config.h.in config.h)
|
configure_file(config.h.in config.h)
|
||||||
endif() # MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
endif() # MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||||
|
|
||||||
|
add_library(libusb::usb ALIAS usb)
|
||||||
|
|
|
@ -64,10 +64,8 @@ if (ENABLE_SDL2)
|
||||||
target_compile_definitions(input_common PRIVATE HAVE_SDL2)
|
target_compile_definitions(input_common PRIVATE HAVE_SDL2)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
target_link_libraries(input_common PRIVATE usb)
|
|
||||||
|
|
||||||
create_target_directory_groups(input_common)
|
create_target_directory_groups(input_common)
|
||||||
target_link_libraries(input_common PUBLIC core PRIVATE common Boost::boost)
|
target_link_libraries(input_common PUBLIC core PRIVATE common Boost::boost libusb::usb)
|
||||||
|
|
||||||
if (YUZU_USE_PRECOMPILED_HEADERS)
|
if (YUZU_USE_PRECOMPILED_HEADERS)
|
||||||
target_precompile_headers(input_common PRIVATE precompiled_headers.h)
|
target_precompile_headers(input_common PRIVATE precompiled_headers.h)
|
||||||
|
|
Reference in New Issue