31 lines
1.9 KiB
Bash
31 lines
1.9 KiB
Bash
#!/bin/sh
|
|
# Android (arm64) 용 rsync 를 소스에서 빌드해 third_party/rsync/android/arm64-v8a/librsync.so 로 둔다
|
|
# (APK 의 jniLibs 로 들어가 앱의 네이티브 라이브러리 폴더에서 실행된다. Android 의 libc 만 쓴다).
|
|
# 소스: https://download.samba.org/pub/rsync/src/rsync-3.4.1.tar.gz (SHA256 고정, 고치지 않음)
|
|
# 선택 기능 (openssl · xxhash · zstd · lz4 · iconv · ACL · xattr) 은 끄고, 들어 있는 zlib · popt 를 쓴다.
|
|
# 사용법 (Git Bash): sh tool/build_rsync_android.sh - Android NDK 가 필요 (ANDROID_NDK 또는 tools/android-sdk/ndk/*)
|
|
set -e
|
|
APP=$(cd "$(dirname "$0")/.." && pwd)
|
|
VER=3.4.1
|
|
SHA=2924bcb3a1ed8b551fc101f740b9f0fe0a202b115027647cf69850d65fd88c52
|
|
NDK_ROOT=${ANDROID_NDK:-$(ls -d "$APP"/../tools/android-sdk/ndk/* | sort | tail -1)}
|
|
case "$(uname -s)" in MINGW*|MSYS*|CYGWIN*) HOST=windows-x86_64; EXE=.exe ;; Darwin) HOST=darwin-x86_64; EXE= ;; *) HOST=linux-x86_64; EXE= ;; esac
|
|
TC=$NDK_ROOT/toolchains/llvm/prebuilt/$HOST/bin
|
|
MAKE=$NDK_ROOT/prebuilt/$HOST/bin/make$EXE
|
|
[ -x "$MAKE" ] || MAKE=make
|
|
WORK=${TMPDIR:-/tmp}/jj_rsync_android
|
|
rm -rf "$WORK" && mkdir -p "$WORK" && cd "$WORK"
|
|
curl -sSLf -o rsync.tar.gz "https://download.samba.org/pub/rsync/src/rsync-$VER.tar.gz"
|
|
echo "$SHA rsync.tar.gz" | sha256sum -c -
|
|
tar xzf rsync.tar.gz 2>/dev/null || true # md2man 심볼릭 링크 오류는 무시 (문서용)
|
|
cd "rsync-$VER"
|
|
export CC="$TC/clang$EXE --target=aarch64-linux-android24" AR="$TC/llvm-ar$EXE" RANLIB="$TC/llvm-ranlib$EXE"
|
|
./configure --host=aarch64-linux-android --disable-openssl --disable-xxhash --disable-zstd --disable-lz4 \
|
|
--disable-md2man --disable-iconv --disable-acl-support --disable-xattr-support \
|
|
--with-included-zlib --with-included-popt --disable-ipv6 > configure.log
|
|
"$MAKE" SHELL=/bin/sh rsync > make.log 2>&1
|
|
OUT="$APP/third_party/rsync/android/arm64-v8a"
|
|
mkdir -p "$OUT"
|
|
"$TC/llvm-strip$EXE" -o "$OUT/librsync.so" rsync
|
|
ls -l "$OUT/librsync.so"
|