This commit is contained in:
Character animation tools 2022-12-05 22:14:10 +08:00 committed by GitHub
commit 0ce605db06
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 179 additions and 5 deletions

View file

@ -145,13 +145,21 @@ else
prebuilt_libusb_root = meson.get_cross_property('prebuilt_libusb_root')
libusb_bin_dir = meson.current_source_dir() + '/prebuilt-deps/data/' + prebuilt_libusb
libusb_include_dir = 'prebuilt-deps/data/' + prebuilt_libusb_root + '/include'
libusb = declare_dependency(
dependencies: [
cc.find_library('msys-usb-1.0', dirs: libusb_bin_dir),
if host_machine.cpu_family() == 'x86'
libusb = declare_dependency(
dependencies: [
cc.find_library('msys-usb-1.0', dirs: libusb_bin_dir),
],
include_directories: include_directories(libusb_include_dir)
)
)
elif host_machine.cpu_family() == 'aarch64'
libusb = declare_dependency(
dependencies: [
cc.find_library('libusb-1.0', dirs: libusb_bin_dir),
],
include_directories: include_directories(libusb_include_dir)
)
endif
dependencies = [
ffmpeg,

View file

@ -0,0 +1,36 @@
#!/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=ffmpeg-aarch64-4.3.1
FILENAME=ffmpeg-4.3.1-windows-aarch64.7z
SHA256SUM=8dd5ed9692f36c2f012a64903b8b2baec6581973d0d4dad872d1a476bcf5018b
if [[ -d "$DEP_DIR" ]]
then
echo "$DEP_DIR" found
exit 0
fi
get_file "https://github.com/ZIXT233/FFmpeg-windows-aarch64-mingw/releases/download/n4.3.1/$FILENAME" \
"$FILENAME" "$SHA256SUM"
mkdir "$DEP_DIR"
cd "$DEP_DIR"
ZIP_PREFIX=ffmpeg-4.3.1-windows-aarch64
7z x "../$FILENAME" \
"$ZIP_PREFIX"/bin/avutil-56.dll \
"$ZIP_PREFIX"/bin/avcodec-58.dll \
"$ZIP_PREFIX"/bin/avformat-58.dll \
"$ZIP_PREFIX"/bin/swresample-3.dll \
"$ZIP_PREFIX"/bin/swscale-5.dll \
"$ZIP_PREFIX"/include
mv "$ZIP_PREFIX"/* .
rmdir "$ZIP_PREFIX"

View file

@ -0,0 +1,32 @@
#!/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.26
FILENAME=libusb-windows-aarch64-mingw.7z
SHA256SUM=4c83624edc89f95c3500fda3f982f038e7ce996979a8cca0e2e0133d3ef9ef64
if [[ -d "$DEP_DIR" ]]
then
echo "$DEP_DIR" found
exit 0
fi
get_file "https://github.com/ZIXT233/libusb-windows-aarch64-mingw/releases/download/v1.0.26/$FILENAME" "$FILENAME" "$SHA256SUM"
mkdir "$DEP_DIR"
cd "$DEP_DIR"
# include/ is the same in all folders of the archive
7z x "../$FILENAME" \
libusb-windows-aarch64-mingw/bin/libusb-1.0.dll \
libusb-windows-aarch64-mingw/include/
mv libusb-windows-aarch64-mingw/bin MinGW-aarch64
mv libusb-windows-aarch64-mingw/include .
rm -rf libusb-windows-aarch64-mingw

View file

@ -0,0 +1,30 @@
#!/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=SDL2-2.0.22
FILENAME=SDL-windows-aarch64-mingw.7z
SHA256SUM=96a1bd6a0246419ab1e1ae510ba79dfbbfc94c2681f039426a632ffbd4d4b603
if [[ -d "$DEP_DIR" ]]
then
echo "$DEP_DIR" found
exit 0
fi
get_file "https://github.com/ZIXT233/SDL-windows-aarch64-mingw/releases/download/release-2.0.22/$FILENAME" "$FILENAME" "$SHA256SUM"
mkdir "$DEP_DIR"
cd "$DEP_DIR"
7z x "../$FILENAME" \
SDL-windows-aarch64-mingw/bin/SDL2.dll \
SDL-windows-aarch64-mingw/include/ \
SDL-windows-aarch64-mingw/lib/
mv SDL-windows-aarch64-mingw aarch64-w64-mingw32

25
cross_win_arm64.txt Normal file
View file

@ -0,0 +1,25 @@
# apt install mingw-w64 mingw-w64-tools
[binaries]
name = 'mingw'
c = 'aarch64-w64-mingw32-gcc'
cpp = 'aarch64-w64-mingw32-g++'
ar = 'aarch64-w64-mingw32-ar'
strip = 'aarch64-w64-mingw32-strip'
pkgconfig = 'aarch64-w64-mingw32-pkg-config'
windres = 'aarch64-w64-mingw32-windres'
[host_machine]
system = 'windows'
cpu_family = 'aarch64'
cpu = 'aarch64'
endian = 'little'
[properties]
ffmpeg_avcodec = 'avcodec-58'
ffmpeg_avformat = 'avformat-58'
ffmpeg_avutil = 'avutil-56'
prebuilt_ffmpeg = 'ffmpeg-aarch64-4.3.1'
prebuilt_sdl2 = 'SDL2-2.0.22/aarch64-w64-mingw32'
prebuilt_libusb_root = 'libusb-1.0.26'
prebuilt_libusb = 'libusb-1.0.26/MinGW-aarch64'

View file

@ -23,14 +23,17 @@ TEST_BUILD_DIR := build-test
SERVER_BUILD_DIR := build-server
WIN32_BUILD_DIR := build-win32
WIN64_BUILD_DIR := build-win64
WIN_ARM64_BUILD_DIR := build-win-arm64
DIST := dist
WIN32_TARGET_DIR := scrcpy-win32
WIN64_TARGET_DIR := scrcpy-win64
WIN_ARM64_TARGET_DIR := scrcpy-win-arm64
VERSION := $(shell git describe --tags --always)
WIN32_TARGET := $(WIN32_TARGET_DIR)-$(VERSION).zip
WIN64_TARGET := $(WIN64_TARGET_DIR)-$(VERSION).zip
WIN_ARM64_TARGET := $(WIN_ARM64_TARGET_DIR)-$(VERSION).zip
RELEASE_DIR := release-$(VERSION)
@ -74,6 +77,12 @@ prepare-deps-win64:
@app/prebuilt-deps/prepare-ffmpeg-win64.sh
@app/prebuilt-deps/prepare-libusb.sh
prepare-deps-win-arm64:
@app/prebuilt-deps/prepare-adb.sh
@app/prebuilt-deps/prepare-sdl-win-arm64.sh
@app/prebuilt-deps/prepare-ffmpeg-win-arm64.sh
@app/prebuilt-deps/prepare-libusb-win-arm64.sh
build-win32: prepare-deps-win32
[ -d "$(WIN32_BUILD_DIR)" ] || ( mkdir "$(WIN32_BUILD_DIR)" && \
meson "$(WIN32_BUILD_DIR)" \
@ -92,6 +101,17 @@ build-win64: prepare-deps-win64
-Dportable=true )
ninja -C "$(WIN64_BUILD_DIR)"
build-win-arm64: prepare-deps-win-arm64
[ -d "$(WIN_ARM64_BUILD_DIR)" ] || ( mkdir "$(WIN_ARM64_BUILD_DIR)" && \
meson "$(WIN_ARM64_BUILD_DIR)" \
--cross-file cross_win_arm64.txt \
--buildtype release --strip -Db_lto=true \
-Dcompile_server=false \
-Dportable=true )
sed -i 's/-Wl,--allow-shlib-undefined//g' "$(WIN_ARM64_BUILD_DIR)/build.ninja"
ninja -C "$(WIN_ARM64_BUILD_DIR)"
dist-win32: build-server build-win32
mkdir -p "$(DIST)/$(WIN32_TARGET_DIR)"
cp "$(SERVER_BUILD_DIR)"/server/scrcpy-server "$(DIST)/$(WIN32_TARGET_DIR)/"
@ -130,6 +150,25 @@ dist-win64: build-server build-win64
cp app/prebuilt-deps/data/SDL2-2.0.22/x86_64-w64-mingw32/bin/SDL2.dll "$(DIST)/$(WIN64_TARGET_DIR)/"
cp app/prebuilt-deps/data/libusb-1.0.26/MinGW-x64/msys-usb-1.0.dll "$(DIST)/$(WIN64_TARGET_DIR)/"
dist-win-arm64: build-server build-win-arm64
mkdir -p "$(DIST)/$(WIN_ARM64_TARGET_DIR)"
cp "$(SERVER_BUILD_DIR)"/server/scrcpy-server "$(DIST)/$(WIN_ARM64_TARGET_DIR)/"
cp "$(WIN_ARM64_BUILD_DIR)"/app/scrcpy.exe "$(DIST)/$(WIN_ARM64_TARGET_DIR)/"
cp app/data/scrcpy-console.bat "$(DIST)/$(WIN_ARM64_TARGET_DIR)"
cp app/data/scrcpy-noconsole.vbs "$(DIST)/$(WIN_ARM64_TARGET_DIR)"
cp app/data/icon.png "$(DIST)/$(WIN_ARM64_TARGET_DIR)"
cp app/data/open_a_terminal_here.bat "$(DIST)/$(WIN_ARM64_TARGET_DIR)"
cp app/prebuilt-deps/data/ffmpeg-aarch64-4.3.1/bin/avutil-56.dll "$(DIST)/$(WIN_ARM64_TARGET_DIR)/"
cp app/prebuilt-deps/data/ffmpeg-aarch64-4.3.1/bin/avcodec-58.dll "$(DIST)/$(WIN_ARM64_TARGET_DIR)/"
cp app/prebuilt-deps/data/ffmpeg-aarch64-4.3.1/bin/avformat-58.dll "$(DIST)/$(WIN_ARM64_TARGET_DIR)/"
cp app/prebuilt-deps/data/ffmpeg-aarch64-4.3.1/bin/swresample-3.dll "$(DIST)/$(WIN_ARM64_TARGET_DIR)/"
cp app/prebuilt-deps/data/ffmpeg-aarch64-4.3.1/bin/swscale-5.dll "$(DIST)/$(WIN_ARM64_TARGET_DIR)/"
cp app/prebuilt-deps/data/platform-tools-33.0.1/adb.exe "$(DIST)/$(WIN_ARM64_TARGET_DIR)/"
cp app/prebuilt-deps/data/platform-tools-33.0.1/AdbWinApi.dll "$(DIST)/$(WIN_ARM64_TARGET_DIR)/"
cp app/prebuilt-deps/data/platform-tools-33.0.1/AdbWinUsbApi.dll "$(DIST)/$(WIN_ARM64_TARGET_DIR)/"
cp app/prebuilt-deps/data/SDL2-2.0.22/aarch64-w64-mingw32/bin/SDL2.dll "$(DIST)/$(WIN_ARM64_TARGET_DIR)/"
cp app/prebuilt-deps/data/libusb-1.0.26/MinGW-aarch64/libusb-1.0.dll "$(DIST)/$(WIN_ARM64_TARGET_DIR)/"
zip-win32: dist-win32
cd "$(DIST)/$(WIN32_TARGET_DIR)"; \
zip -r "../$(WIN32_TARGET)" .
@ -137,3 +176,7 @@ zip-win32: dist-win32
zip-win64: dist-win64
cd "$(DIST)/$(WIN64_TARGET_DIR)"; \
zip -r "../$(WIN64_TARGET)" .
zip-win-arm64: dist-win-arm64
cd "$(DIST)/$(WIN_ARM64_TARGET_DIR)"; \
zip -r "../$(WIN_ARM64_TARGET)" .