Auto-commit after successful build: update app gameplay/UI, improve build setup
Changed files:\nCrossCompileGitForAndroid.sh SetupBuildEnvironment.sh app/build.gradle.kts app/src/main/assets/native-git/arm64-v8a/git app/src/main/java/com/kawomi/githugandroid/GitRuntime.kt
This commit is contained in:
99
CrossCompileGitForAndroid.sh
Normal file
99
CrossCompileGitForAndroid.sh
Normal file
@@ -0,0 +1,99 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_DIR="$SCRIPT_DIR"
|
||||
SDK_DIR="$PROJECT_DIR/android-sdk"
|
||||
NDK_DIR="$SDK_DIR/ndk/27.2.12479018"
|
||||
TOOLBIN="$NDK_DIR/toolchains/llvm/prebuilt/linux-x86_64/bin"
|
||||
TMP_DIR="$PROJECT_DIR/.tmp-android-build"
|
||||
GIT_SRC_DIR="$TMP_DIR/git-src"
|
||||
ASSET_DIR="$PROJECT_DIR/app/src/main/assets/native-git/arm64-v8a"
|
||||
|
||||
log() {
|
||||
printf '\n[%s] %s\n' "cross-compile" "$1"
|
||||
}
|
||||
|
||||
require_path() {
|
||||
if [ ! -e "$1" ]; then
|
||||
echo "Required path not found: $1" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
require_tool() {
|
||||
if ! command -v "$1" >/dev/null 2>&1; then
|
||||
echo "Missing required tool: $1" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
require_tool git
|
||||
require_tool make
|
||||
require_tool perl
|
||||
require_tool clang
|
||||
require_tool pkg-config
|
||||
require_tool readelf
|
||||
|
||||
require_path "$NDK_DIR"
|
||||
require_path "$TOOLBIN/aarch64-linux-android24-clang"
|
||||
|
||||
mkdir -p "$TMP_DIR"
|
||||
|
||||
if [ ! -d "$GIT_SRC_DIR/.git" ]; then
|
||||
log "Cloning Git source"
|
||||
git clone --depth 1 https://github.com/git/git.git "$GIT_SRC_DIR"
|
||||
else
|
||||
log "Using existing Git source checkout"
|
||||
fi
|
||||
|
||||
export PATH="$TOOLBIN:$PATH"
|
||||
|
||||
log "Building native Git for Android arm64-v8a"
|
||||
cd "$GIT_SRC_DIR"
|
||||
make clean >/dev/null 2>&1 || true
|
||||
make -j4 \
|
||||
uname_S=Android \
|
||||
uname_O=Android \
|
||||
NO_PTHREADS=YesPlease \
|
||||
NO_OPENSSL=YesPlease \
|
||||
NO_CURL=YesPlease \
|
||||
NO_EXPAT=YesPlease \
|
||||
NO_GETTEXT=YesPlease \
|
||||
NO_TCLTK=YesPlease \
|
||||
NO_PERL=YesPlease \
|
||||
NO_PYTHON=YesPlease \
|
||||
NO_INSTALL_HARDLINKS=YesPlease \
|
||||
NO_ICONV=YesPlease \
|
||||
NO_LIBGEN_H=YesPlease \
|
||||
NO_REGEX=NeedsStartEnd \
|
||||
HAVE_ALLOCA_H=YesPlease \
|
||||
HAVE_PATHS_H=YesPlease \
|
||||
HAVE_DEV_TTY=YesPlease \
|
||||
HAVE_CLOCK_GETTIME=YesPlease \
|
||||
HAVE_CLOCK_MONOTONIC=YesPlease \
|
||||
HAVE_GETDELIM=YesPlease \
|
||||
FREAD_READS_DIRECTORIES=UnfortunatelyYes \
|
||||
CSPRNG_METHOD= \
|
||||
CC=aarch64-linux-android24-clang \
|
||||
AR=llvm-ar \
|
||||
RANLIB=llvm-ranlib \
|
||||
STRIP=llvm-strip \
|
||||
git
|
||||
|
||||
log "Validating the produced binary"
|
||||
file git
|
||||
readelf -h git | sed -n '1,20p'
|
||||
readelf -d git | sed -n '1,40p'
|
||||
|
||||
mkdir -p "$ASSET_DIR"
|
||||
llvm-strip -s git -o "$ASSET_DIR/git"
|
||||
chmod 755 "$ASSET_DIR/git"
|
||||
|
||||
log "Bundled stripped binary at: $ASSET_DIR/git"
|
||||
ls -lh "$ASSET_DIR/git"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user