Skip to content

Commit 6b65cd4

Browse files
committed
Build for Windows with libusb support
Fixes Genymobile#2773 <Genymobile#2773> PR Genymobile#3011 <Genymobile#3011>
1 parent ff3cb31 commit 6b65cd4

File tree

6 files changed

+54
-3
lines changed

6 files changed

+54
-3
lines changed

BUILD.md

+4-2
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,8 @@ install the required packages:
161161
```bash
162162
# runtime dependencies
163163
pacman -S mingw-w64-x86_64-SDL2 \
164-
mingw-w64-x86_64-ffmpeg
164+
mingw-w64-x86_64-ffmpeg \
165+
mingw-w64-x86_64-libusb
165166

166167
# client build dependencies
167168
pacman -S mingw-w64-x86_64-make \
@@ -175,7 +176,8 @@ For a 32 bits version, replace `x86_64` by `i686`:
175176
```bash
176177
# runtime dependencies
177178
pacman -S mingw-w64-i686-SDL2 \
178-
mingw-w64-i686-ffmpeg
179+
mingw-w64-i686-ffmpeg \
180+
mingw-w64-i686-libusb
179181

180182
# client build dependencies
181183
pacman -S mingw-w64-i686-make \

app/meson.build

+14-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ if v4l2_support
7474
src += [ 'src/v4l2_sink.c' ]
7575
endif
7676

77-
usb_support = get_option('usb') and host_machine.system() != 'windows'
77+
usb_support = get_option('usb')
7878
if usb_support
7979
src += [
8080
'src/usb/aoa_hid.c',
@@ -141,9 +141,22 @@ else
141141
include_directories: include_directories(ffmpeg_include_dir)
142142
)
143143

144+
prebuilt_libusb = meson.get_cross_property('prebuilt_libusb')
145+
prebuilt_libusb_root = meson.get_cross_property('prebuilt_libusb_root')
146+
libusb_bin_dir = meson.current_source_dir() + '/prebuilt-deps/data/' + prebuilt_libusb + '/dll'
147+
libusb_include_dir = 'prebuilt-deps/data/' + prebuilt_libusb_root + '/include'
148+
149+
libusb = declare_dependency(
150+
dependencies: [
151+
cc.find_library('libusb-1.0', dirs: libusb_bin_dir),
152+
],
153+
include_directories: include_directories(libusb_include_dir)
154+
)
155+
144156
dependencies = [
145157
ffmpeg,
146158
sdl2,
159+
libusb,
147160
cc.find_library('mingw32')
148161
]
149162

app/prebuilt-deps/prepare-libusb.sh

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/usr/bin/env bash
2+
set -e
3+
DIR=$(dirname ${BASH_SOURCE[0]})
4+
cd "$DIR"
5+
. common
6+
mkdir -p "$PREBUILT_DATA_DIR"
7+
cd "$PREBUILT_DATA_DIR"
8+
9+
DEP_DIR=libusb-1.0.25
10+
11+
FILENAME=libusb-1.0.25.7z
12+
SHA256SUM=3d1c98416f454026034b2b5d67f8a294053898cb70a8b489874e75b136c6674d
13+
14+
if [[ -d "$DEP_DIR" ]]
15+
then
16+
echo "$DEP_DIR" found
17+
exit 0
18+
fi
19+
20+
get_file "https://github.com/libusb/libusb/releases/download/v1.0.25/$FILENAME" "$FILENAME" "$SHA256SUM"
21+
22+
mkdir "$DEP_DIR"
23+
cd "$DEP_DIR"
24+
25+
7z x "../$FILENAME" \
26+
MinGW32/dll/libusb-1.0.dll \
27+
MinGW64/dll/libusb-1.0.dll \
28+
include /

cross_win32.txt

+2
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,5 @@ ffmpeg_avformat = 'avformat-58'
2121
ffmpeg_avutil = 'avutil-56'
2222
prebuilt_ffmpeg = 'ffmpeg-win32-4.3.1'
2323
prebuilt_sdl2 = 'SDL2-2.0.20/i686-w64-mingw32'
24+
prebuilt_libusb_root = 'libusb-1.0.25'
25+
prebuilt_libusb = prebuilt_libusb_root + '/MinGW32'

cross_win64.txt

+2
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,5 @@ ffmpeg_avformat = 'avformat-59'
2121
ffmpeg_avutil = 'avutil-57'
2222
prebuilt_ffmpeg = 'ffmpeg-win64-5.0'
2323
prebuilt_sdl2 = 'SDL2-2.0.20/x86_64-w64-mingw32'
24+
prebuilt_libusb_root = 'libusb-1.0.25'
25+
prebuilt_libusb = prebuilt_libusb_root + '/MinGW64'

release.mk

+4
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,13 @@ prepare-deps-win32:
6666
@app/prebuilt-deps/prepare-adb.sh
6767
@app/prebuilt-deps/prepare-sdl.sh
6868
@app/prebuilt-deps/prepare-ffmpeg-win32.sh
69+
@app/prebuilt-deps/prepare-libusb.sh
6970

7071
prepare-deps-win64:
7172
@app/prebuilt-deps/prepare-adb.sh
7273
@app/prebuilt-deps/prepare-sdl.sh
7374
@app/prebuilt-deps/prepare-ffmpeg-win64.sh
75+
@app/prebuilt-deps/prepare-libusb.sh
7476

7577
build-win32: prepare-deps-win32
7678
[ -d "$(WIN32_BUILD_DIR)" ] || ( mkdir "$(WIN32_BUILD_DIR)" && \
@@ -107,6 +109,7 @@ dist-win32: build-server build-win32
107109
cp app/prebuilt-deps/data/platform-tools-31.0.3/AdbWinApi.dll "$(DIST)/$(WIN32_TARGET_DIR)/"
108110
cp app/prebuilt-deps/data/platform-tools-31.0.3/AdbWinUsbApi.dll "$(DIST)/$(WIN32_TARGET_DIR)/"
109111
cp app/prebuilt-deps/data/SDL2-2.0.20/i686-w64-mingw32/bin/SDL2.dll "$(DIST)/$(WIN32_TARGET_DIR)/"
112+
cp app/prebuilt-deps/data/libusb-1.0.25/MinGW32/dll/libusb-1.0.dll "$(DIST)/$(WIN32_TARGET_DIR)/"
110113

111114
dist-win64: build-server build-win64
112115
mkdir -p "$(DIST)/$(WIN64_TARGET_DIR)"
@@ -125,6 +128,7 @@ dist-win64: build-server build-win64
125128
cp app/prebuilt-deps/data/platform-tools-31.0.3/AdbWinApi.dll "$(DIST)/$(WIN64_TARGET_DIR)/"
126129
cp app/prebuilt-deps/data/platform-tools-31.0.3/AdbWinUsbApi.dll "$(DIST)/$(WIN64_TARGET_DIR)/"
127130
cp app/prebuilt-deps/data/SDL2-2.0.20/x86_64-w64-mingw32/bin/SDL2.dll "$(DIST)/$(WIN64_TARGET_DIR)/"
131+
cp app/prebuilt-deps/data/libusb-1.0.25/MinGW64/dll/libusb-1.0.dll "$(DIST)/$(WIN64_TARGET_DIR)/"
128132

129133
zip-win32: dist-win32
130134
cd "$(DIST)/$(WIN32_TARGET_DIR)"; \

0 commit comments

Comments
 (0)