aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: 6bedcdd1a00992c05baedb79d64dea9a418ee5c6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# rsend build orchestration. Heavy lifting lives in the shell scripts so the
# project builds with one `make` on x86_64 Linux with glibc or musl.

.POSIX:

all: native app

# Provision the pinned toolchain (JDK, Go, Android SDK+NDK, Gradle) into
# $HOME/toolchains. One-time; then `. $HOME/toolchains/env.sh` before building.
setup:
	sh ci/setup-toolchain.sh

# Native executables, shipped inside the APK as lib*.so.
native: rsync rsh

# Real rsync, cross-compiled from pinned source via the Android NDK.
rsync:
	sh rsync/build.sh

# Go SSH transport, cross-compiled to Bionic PIE via the NDK (needs the NDK,
# like rsync). rsh logic is verified host-side by `make test`.
rsh:
	sh rsh/build.sh

# Android app. Consumes the native libs from app/src/main/jniLibs. Uses the
# pinned system gradle; run from the repo root where settings.gradle lives. No
# wrapper jar is committed; gradle/wrapper/gradle-wrapper.properties only pins
# the version for F-Droid's gradlew, which refuses to build without it.
app: native
	gradle :app:assembleRelease

test:
	sh ci/test.sh

verify-repro:
	sh ci/verify-repro.sh

clean:
	rm -rf out build app/build app/src/main/jniLibs rsync/work

.PHONY: all setup native rsync rsh app test verify-repro clean