diff --git a/app/meson.build b/app/meson.build index a9b39b1e..dcc7eb94 100644 --- a/app/meson.build +++ b/app/meson.build @@ -73,7 +73,7 @@ if v4l2_support src += [ 'src/v4l2_sink.c' ] endif -usb_support = host_machine.system() == 'linux' +usb_support = host_machine.system() == 'linux' or host_machine.system() == 'windows' if usb_support src += [ 'src/usb/aoa_hid.c', @@ -140,9 +140,22 @@ else include_directories: include_directories(ffmpeg_include_dir) ) + prebuilt_libusb = meson.get_cross_property('prebuilt_libusb') + prebuilt_libusb_root = meson.get_cross_property('prebuilt_libusb_root') + libusb_bin_dir = meson.current_source_dir() + '/../prebuilt-deps/data/' + prebuilt_libusb + '/dll' + libusb_include_dir = '../prebuilt-deps/data/' + prebuilt_libusb_root + '/include' + + libusb = declare_dependency( + dependencies: [ + cc.find_library('libusb-1.0', dirs: libusb_bin_dir), + ], + include_directories: include_directories(libusb_include_dir) + ) + dependencies = [ ffmpeg, sdl2, + libusb, cc.find_library('mingw32') ] diff --git a/cross_win32.txt b/cross_win32.txt index db448a00..750dbd78 100644 --- a/cross_win32.txt +++ b/cross_win32.txt @@ -21,3 +21,5 @@ ffmpeg_avformat = 'avformat-58' ffmpeg_avutil = 'avutil-56' prebuilt_ffmpeg = 'ffmpeg-win32-4.3.1' prebuilt_sdl2 = 'SDL2-2.0.20/i686-w64-mingw32' +prebuilt_libusb_root = 'libusb-1.0.25' +prebuilt_libusb = prebuilt_libusb_root + '/MinGW32' diff --git a/cross_win64.txt b/cross_win64.txt index 9d169a71..114b0c22 100644 --- a/cross_win64.txt +++ b/cross_win64.txt @@ -21,3 +21,5 @@ ffmpeg_avformat = 'avformat-59' ffmpeg_avutil = 'avutil-57' prebuilt_ffmpeg = 'ffmpeg-win64-5.0' prebuilt_sdl2 = 'SDL2-2.0.20/x86_64-w64-mingw32' +prebuilt_libusb_root = 'libusb-1.0.25' +prebuilt_libusb = prebuilt_libusb_root + '/MinGW64' diff --git a/prebuilt-deps/prepare-libusb.sh b/prebuilt-deps/prepare-libusb.sh new file mode 100755 index 00000000..54ead536 --- /dev/null +++ b/prebuilt-deps/prepare-libusb.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +set -e +DIR=$(dirname ${BASH_SOURCE[0]}) +cd "$DIR" +. common +mkdir -p "$PREBUILT_DATA_DIR" +cd "$PREBUILT_DATA_DIR" + +DEP_DIR=libusb-1.0.25 + +FILENAME=libusb-1.0.25.7z +SHA256SUM=3d1c98416f454026034b2b5d67f8a294053898cb70a8b489874e75b136c6674d + +if [[ -d "$DEP_DIR" ]] +then + echo "$DEP_DIR" found + exit 0 +fi + +get_file "https://github.com/libusb/libusb/releases/download/v1.0.25/$FILENAME" "$FILENAME" "$SHA256SUM" + +mkdir "$DEP_DIR" +cd "$DEP_DIR" + +7z x "../$FILENAME" \ + MinGW32/dll/libusb-1.0.dll \ + MinGW64/dll/libusb-1.0.dll \ + include / diff --git a/release.mk b/release.mk index 37b8d5c5..5ae346d5 100644 --- a/release.mk +++ b/release.mk @@ -66,6 +66,7 @@ prepare-deps-win32: @prebuilt-deps/prepare-adb.sh @prebuilt-deps/prepare-sdl.sh @prebuilt-deps/prepare-ffmpeg-win32.sh + @prebuilt-deps/prepare-libusb.sh build-win32: prepare-deps-win32 [ -d "$(WIN32_BUILD_DIR)" ] || ( mkdir "$(WIN32_BUILD_DIR)" && \ @@ -107,6 +108,7 @@ dist-win32: build-server build-win32 cp prebuilt-deps/data/platform-tools-31.0.3/AdbWinApi.dll "$(DIST)/$(WIN32_TARGET_DIR)/" cp prebuilt-deps/data/platform-tools-31.0.3/AdbWinUsbApi.dll "$(DIST)/$(WIN32_TARGET_DIR)/" cp prebuilt-deps/data/SDL2-2.0.20/i686-w64-mingw32/bin/SDL2.dll "$(DIST)/$(WIN32_TARGET_DIR)/" + cp prebuilt-deps/data/libusb-1.0.25/MinGW32/dll/libusb-1.0.dll "$(DIST)/$(WIN32_TARGET_DIR)/" dist-win64: build-server build-win64 mkdir -p "$(DIST)/$(WIN64_TARGET_DIR)" @@ -125,6 +127,7 @@ dist-win64: build-server build-win64 cp prebuilt-deps/data/platform-tools-31.0.3/AdbWinApi.dll "$(DIST)/$(WIN64_TARGET_DIR)/" cp prebuilt-deps/data/platform-tools-31.0.3/AdbWinUsbApi.dll "$(DIST)/$(WIN64_TARGET_DIR)/" cp prebuilt-deps/data/SDL2-2.0.20/x86_64-w64-mingw32/bin/SDL2.dll "$(DIST)/$(WIN64_TARGET_DIR)/" + cp prebuilt-deps/data/libusb-1.0.25/MinGW64/dll/libusb-1.0.dll "$(DIST)/$(WIN64_TARGET_DIR)/" zip-win32: dist-win32 cd "$(DIST)/$(WIN32_TARGET_DIR)"; \