aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/libuvc
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/libuvc
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/libuvc')
-rw-r--r--vcpkg/ports/libuvc/build_fix.patch70
-rw-r--r--vcpkg/ports/libuvc/portfile.cmake34
-rw-r--r--vcpkg/ports/libuvc/usage8
-rw-r--r--vcpkg/ports/libuvc/vcpkg.json20
4 files changed, 132 insertions, 0 deletions
diff --git a/vcpkg/ports/libuvc/build_fix.patch b/vcpkg/ports/libuvc/build_fix.patch
new file mode 100644
index 0000000..4e6bade
--- /dev/null
+++ b/vcpkg/ports/libuvc/build_fix.patch
@@ -0,0 +1,70 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index fbaffc9..672ebb9 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -5,7 +5,6 @@ project(libuvc
+ )
+
+ # Additional search scripts path for libusb-1.0, libjpeg, OpenCV
+-list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake)
+
+ # Xcode and Visual Studio do not using CMAKE_BUILD_TYPE cache variable
+ # so we use Release build type only with single configuration generators.
+@@ -39,10 +38,11 @@ set(SOURCES
+ src/misc.c
+ )
+
+-find_package(LibUSB)
++FIND_PACKAGE(PkgConfig REQUIRED)
++pkg_check_modules(libusb REQUIRED IMPORTED_TARGET libusb-1.0)
+
+ # JpegPkg name to differ from shipped with CMake
+-find_package(JpegPkg QUIET)
++find_package(JPEG REQUIRED)
+ if(JPEG_FOUND)
+ message(STATUS "Building libuvc with JPEG support.")
+ set(LIBUVC_HAS_JPEG TRUE)
+@@ -116,8 +116,11 @@ foreach(target_name IN LISTS UVC_TARGETS)
+ )
+ target_link_libraries(${target_name}
+ # libusb-1.0 used internally so we link to it privately.
+- PRIVATE LibUSB::LibUSB ${threads}
++ PRIVATE PkgConfig::libusb ${threads}
+ )
++ if(APPLE)
++ target_link_libraries(${target_name} PRIVATE "-framework IOKit" "-framework CoreFoundation" "-framework Security")
++ endif()
+ if(JPEG_FOUND)
+ target_link_libraries(${target_name}
+ PRIVATE JPEG::JPEG
+@@ -191,12 +194,6 @@ install(EXPORT libuvcTargets
+ DESTINATION ${CMAKE_INSTALL_CMAKEDIR}
+ )
+
+-install(FILES
+- cmake/FindLibUSB.cmake
+- cmake/FindJpegPkg.cmake
+- DESTINATION ${CMAKE_INSTALL_CMAKEDIR}
+-)
+-
+ include(CMakePackageConfigHelpers)
+ write_basic_package_version_file(libuvcConfigVersion.cmake
+ COMPATIBILITY AnyNewerVersion
+diff --git a/libuvcConfig.cmake b/libuvcConfig.cmake
+index b9887ea..c704ab5 100644
+--- a/libuvcConfig.cmake
++++ b/libuvcConfig.cmake
+@@ -10,8 +10,11 @@ if(${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED)
+ list(APPEND extraArgs REQUIRED)
+ endif()
+
+-find_package(JpegPkg ${extraArgs})
+-find_package(LibUSB ${extraArgs})
++include(CMakeFindDependencyMacro)
++find_dependency(JPEG ${extraArgs})
++find_dependency(Threads)
++find_package(PkgConfig REQUIRED)
++pkg_check_modules(libusb REQUIRED IMPORTED_TARGET libusb-1.0)
+ include("${CMAKE_CURRENT_LIST_DIR}/libuvcTargets.cmake")
+
+ set(libuvc_FOUND TRUE)
diff --git a/vcpkg/ports/libuvc/portfile.cmake b/vcpkg/ports/libuvc/portfile.cmake
new file mode 100644
index 0000000..008b8ba
--- /dev/null
+++ b/vcpkg/ports/libuvc/portfile.cmake
@@ -0,0 +1,34 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO libuvc/libuvc
+ REF "v${VERSION}"
+ SHA512 cf2c0a6cc04717f284f25bed17f178a4b2b2a2bb3e5937e50be144e88db2c481c5ea763c164fe0234834fea4837f96fcc13bdbdafd4610d2985943562dfcc72f
+ HEAD_REF master
+ PATCHES build_fix.patch
+)
+
+if (VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
+ set(BUILD_TARGET "Shared")
+else()
+ set(BUILD_TARGET "Static")
+endif()
+
+vcpkg_find_acquire_program(PKGCONFIG)
+vcpkg_cmake_configure(
+ SOURCE_PATH ${SOURCE_PATH}
+ OPTIONS
+ -DPKG_CONFIG_EXECUTABLE="${PKGCONFIG}"
+ -DCMAKE_BUILD_TARGET=${BUILD_TARGET}
+ -DBUILD_EXAMPLE=OFF
+ -DBUILD_TEST=OFF
+)
+vcpkg_cmake_install()
+
+vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/${PORT})
+vcpkg_fixup_pkgconfig()
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.txt")
+
+file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
diff --git a/vcpkg/ports/libuvc/usage b/vcpkg/ports/libuvc/usage
new file mode 100644
index 0000000..44b9362
--- /dev/null
+++ b/vcpkg/ports/libuvc/usage
@@ -0,0 +1,8 @@
+libuvc provides CMake targets:
+
+ find_package(libuvc CONFIG REQUIRED)
+ target_link_libraries(main PRIVATE $<IF:$<TARGET_EXISTS:LibUVC::UVCStatic>,LibUVC::UVCStatic,LibUVC::UVCShared>)
+
+libuvc provides pkg-config modules:
+
+ libuvc
diff --git a/vcpkg/ports/libuvc/vcpkg.json b/vcpkg/ports/libuvc/vcpkg.json
new file mode 100644
index 0000000..b685aa0
--- /dev/null
+++ b/vcpkg/ports/libuvc/vcpkg.json
@@ -0,0 +1,20 @@
+{
+ "name": "libuvc",
+ "version": "0.0.7",
+ "port-version": 1,
+ "description": "a cross-platform library for USB video devices",
+ "homepage": "https://github.com/libuvc/libuvc",
+ "supports": "!uwp & !windows",
+ "dependencies": [
+ "libjpeg-turbo",
+ "libusb",
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ }
+ ]
+}