mirror of
https://github.com/egor-white/zaprett.git
synced 2025-12-10 05:19:42 +05:00
117 lines
3.7 KiB
Makefile
117 lines
3.7 KiB
Makefile
set shell := ["sh", "-eu", "-c"]
|
|
|
|
export ANDROID_API := "21"
|
|
export ANDROID_NDK_VERSION := "r27d-linux"
|
|
|
|
TARGET := `pwd` + "/target"
|
|
|
|
export NDK_HOME := TARGET + "/android-ndk-" + ANDROID_NDK_VERSION
|
|
|
|
_download_android_ndk:
|
|
#!/usr/bin/env sh
|
|
if [ ! -d "{{NDK_HOME}}" ]; then
|
|
echo "Downloading ndk {{ANDROID_NDK_VERSION}} to {{NDK_HOME}}"
|
|
TMPFILE="{{NDK_HOME}}.tmp"
|
|
TMPDIR="{{NDK_HOME}}.extracted.tmp"
|
|
|
|
curl -L -C - -o "$TMPFILE" "https://dl.google.com/android/repository/android-ndk-{{ANDROID_NDK_VERSION}}.zip"
|
|
|
|
unzip "$TMPFILE" -d "$TMPDIR"
|
|
|
|
inner_folder=$(find "$TMPDIR" -mindepth 1 -maxdepth 1 -type d | head -n 1)
|
|
mv -T "$inner_folder" "$NDK_HOME"
|
|
|
|
rm -rf "$TMPFILE" "$TMPDIR"
|
|
|
|
echo "Android ndk {{ANDROID_NDK_VERSION}} successfully installed in {{NDK_HOME}}"
|
|
else
|
|
echo "Android ndk {{ANDROID_NDK_VERSION}} already installed in {{NDK_HOME}}"
|
|
fi
|
|
|
|
_clone_repo_or_update url dir PATH_URL="":
|
|
#!/usr/bin/env sh
|
|
if [ -d "{{dir}}" ]; then
|
|
echo "Repository {{url}} already exists - updating..."
|
|
cd "{{dir}}" && git pull
|
|
else
|
|
git clone "{{url}}" "{{dir}}"
|
|
fi
|
|
|
|
if [ -n "{{PATH_URL}}" ]; then
|
|
echo "Downloading and applying patch from {{PATH_URL}}..."
|
|
cd "{{dir}}"
|
|
|
|
PATCH_FILE="$(mktemp /tmp/patch.XXXXXX.patch)"
|
|
curl -L -o "$PATCH_FILE" "{{PATH_URL}}"
|
|
|
|
git apply --reject --whitespace=fix "$PATCH_FILE"
|
|
rm "$PATCH_FILE"
|
|
|
|
echo "Patch applied successfully."
|
|
fi
|
|
|
|
_build_lib REPO DEST BUILD_DIR CFLAGS="" LDFLAGS="" PATH_URL="":
|
|
#!/usr/bin/env sh
|
|
export API={{ANDROID_API}}
|
|
export ARCH=arm
|
|
export TARGET=armv7a-linux-androideabi
|
|
export TOOLCHAIN={{NDK_HOME}}/toolchains/llvm/prebuilt/linux-x86_64
|
|
|
|
export AR=$TOOLCHAIN/bin/llvm-ar
|
|
export AS=$TOOLCHAIN/bin/llvm-as
|
|
export CC=$TOOLCHAIN/bin/$TARGET$API-clang
|
|
export CXX=$TOOLCHAIN/bin/$TARGET$API-clang++
|
|
export LD=$TOOLCHAIN/bin/ld
|
|
export STRIP=$TOOLCHAIN/bin/llvm-strip
|
|
|
|
just _clone_repo_or_update {{REPO}} "{{DEST}}" "{{PATH_URL}}"
|
|
cd "{{DEST}}"
|
|
autoreconf -fi
|
|
CFLAGS="{{CFLAGS}}" LDFLAGS="{{LDFLAGS}}" \
|
|
./configure --host=arm-linux-androideabi --prefix="{{BUILD_DIR}}"
|
|
make -j"$(nproc)"
|
|
make install
|
|
|
|
|
|
_build_libnfnetlink:
|
|
#!/usr/bin/env sh
|
|
just _build_lib \
|
|
https://git.netfilter.org/libnfnetlink \
|
|
"{{TARGET}}/libnfnetlink" \
|
|
"{{TARGET}}/libnfnetlink/build"
|
|
|
|
_build_libmnl:
|
|
#!/usr/bin/env sh
|
|
just _build_lib \
|
|
https://git.netfilter.org/libmnl \
|
|
"{{TARGET}}/libmnl" \
|
|
"{{TARGET}}/libmnl/build"
|
|
|
|
_build_libnetfilter_queue: _build_libmnl _build_libnfnetlink
|
|
#!/usr/bin/env sh
|
|
export LIBMNL_BUILD="{{TARGET}}/libmnl/build"
|
|
export LIBNFNETLINK_BUILD="{{TARGET}}/libnfnetlink/build"
|
|
just _build_lib \
|
|
https://git.netfilter.org/libnetfilter_queue \
|
|
"{{TARGET}}/libnetfilter_queue" \
|
|
"{{TARGET}}/libnetfilter_queue/build" \
|
|
"-I$LIBMNL_BUILD/include -I$LIBNFNETLINK_BUILD/include" \
|
|
"-L$LIBMNL_BUILD/lib -L$LIBNFNETLINK_BUILD/lib" \
|
|
"https://raw.githubusercontent.com/bol-van/zapret/refs/heads/master/.github/workflows/libnetfilter_queue-android.patch"
|
|
|
|
_build_zapret_libraries: _download_android_ndk _build_libnetfilter_queue
|
|
|
|
prepare-android: _build_zapret_libraries
|
|
#!/usr/bin/env sh
|
|
cargo install cargo-ndk
|
|
|
|
targets=("armv7-linux-androideabi" "aarch64-linux-android" "i686-linux-android" "x86_64-linux-android")
|
|
for t in "${targets[@]}"; do
|
|
if ! rustup target list --installed | grep -q "$t"; then
|
|
echo "Installing missing target: $t"
|
|
rustup target add "$t"
|
|
else
|
|
echo "Target already installed: $t"
|
|
fi
|
|
done
|