80 lines
3.7 KiB
Makefile
80 lines
3.7 KiB
Makefile
ANDROID_SDK_ROOT ?= /opt/android-sdk
|
|
ANDROID_NDK_ROOT ?= /opt/android-ndk
|
|
JAVA_HOME ?= /usr/lib/jvm/java-25-openjdk
|
|
PATH := $(JAVA_HOME)/bin:$(ANDROID_SDK_ROOT)/cmdline-tools/latest/bin:$(ANDROID_SDK_ROOT)/platform-tools:$(PATH)
|
|
APP_ID ?= org.julianfamily.keepassgo
|
|
APK_OUT ?= build/keepassgo.apk
|
|
APK_VERSION ?= 0.1.0.1
|
|
APP_VERSION ?= $(shell git describe --tags --always --dirty 2>/dev/null || echo dev)
|
|
GO_LDFLAGS ?= -X git.julianfamily.org/keepassgo/internal/appui.appVersion=$(APP_VERSION)
|
|
ANDROID_MIN_SDK ?= 28
|
|
ANDROID_TARGET_SDK ?= 35
|
|
SIGNKEY ?=
|
|
SIGNPASS ?=
|
|
ARCH_PKG_DIR ?= packaging/archlinux/keepassgo-git
|
|
ARCH_PKG_TMPL ?= $(ARCH_PKG_DIR)/PKGBUILD.tmpl
|
|
ARCH_PKGBUILD ?= $(ARCH_PKG_DIR)/PKGBUILD
|
|
ARCH_PKGVER ?= $(shell printf 'r%s.%s' "$$(git rev-list --count HEAD 2>/dev/null || echo 0)" "$$(git rev-parse --short HEAD 2>/dev/null || echo dev)")
|
|
ARCH_REPO_DIR ?= $(CURDIR)
|
|
|
|
GOGIO_SIGN_FLAGS :=
|
|
ifneq ($(strip $(SIGNKEY)),)
|
|
GOGIO_SIGN_FLAGS += -signkey $(SIGNKEY)
|
|
endif
|
|
ifneq ($(strip $(SIGNPASS)),)
|
|
GOGIO_SIGN_FLAGS += -signpass $(SIGNPASS)
|
|
endif
|
|
|
|
.PHONY: apk archlinux-pkgbuild browser-bridge browser-extension-validate
|
|
apk: android/keepassgo-android.jar
|
|
@test -x "$(JAVA_HOME)/bin/java" || { echo "JAVA_HOME must point to a working JDK install"; exit 1; }
|
|
@test -d "$(ANDROID_SDK_ROOT)" || { echo "ANDROID_SDK_ROOT must point to an Android SDK install"; exit 1; }
|
|
@test -d "$(ANDROID_NDK_ROOT)" || { echo "ANDROID_NDK_ROOT must point to an Android NDK install"; exit 1; }
|
|
@test -x "$(ANDROID_SDK_ROOT)/cmdline-tools/latest/bin/sdkmanager" || { echo "Android SDK cmdline-tools are missing"; exit 1; }
|
|
@test -d "$(ANDROID_SDK_ROOT)/platforms/android-$(ANDROID_TARGET_SDK)" || { echo "Android platform android-$(ANDROID_TARGET_SDK) is missing"; exit 1; }
|
|
@test -d "$(ANDROID_SDK_ROOT)/build-tools" || { echo "Android build-tools are missing"; exit 1; }
|
|
@mkdir -p "$(dir $(APK_OUT))"
|
|
ANDROID_HOME="$(ANDROID_SDK_ROOT)" \
|
|
ANDROID_SDK_ROOT="$(ANDROID_SDK_ROOT)" \
|
|
ANDROID_NDK_ROOT="$(ANDROID_NDK_ROOT)" \
|
|
JAVA_HOME="$(JAVA_HOME)" \
|
|
go tool gogio -target android \
|
|
-buildmode exe \
|
|
-appid $(APP_ID) \
|
|
-ldflags "$(GO_LDFLAGS)" \
|
|
$(GOGIO_SIGN_FLAGS) \
|
|
-o $(APK_OUT) \
|
|
-version $(APK_VERSION) \
|
|
-minsdk $(ANDROID_MIN_SDK) \
|
|
-targetsdk $(ANDROID_TARGET_SDK) \
|
|
-icon internal/assets/keepassgo-icon.png \
|
|
./cmd/keepassgo
|
|
|
|
android/keepassgo-android.jar: $(shell find androidsrc -type f | sort)
|
|
@test -x "$(JAVA_HOME)/bin/javac" || { echo "JAVA_HOME must point to a working JDK install"; exit 1; }
|
|
@test -f "$(ANDROID_SDK_ROOT)/platforms/android-$(ANDROID_TARGET_SDK)/android.jar" || { echo "Android platform android-$(ANDROID_TARGET_SDK) is missing"; exit 1; }
|
|
@mkdir -p android
|
|
@zsh -lc 'tmpdir=$$(mktemp -d); \
|
|
trap '\''python3 -c "import shutil,sys; shutil.rmtree(sys.argv[1], ignore_errors=True)" "$$tmpdir"'\'' EXIT; \
|
|
"$(JAVA_HOME)/bin/javac" \
|
|
-classpath "$(ANDROID_SDK_ROOT)/platforms/android-$(ANDROID_TARGET_SDK)/android.jar" \
|
|
-d "$$tmpdir" \
|
|
$$(find androidsrc -name '\''*.java'\'' | sort); \
|
|
"$(JAVA_HOME)/bin/jar" --create --file "$$(pwd)/android/keepassgo-android.jar" -C "$$tmpdir" .'
|
|
|
|
archlinux-pkgbuild: $(ARCH_PKG_TMPL) Makefile
|
|
@mkdir -p "$(ARCH_PKG_DIR)"
|
|
@sed \
|
|
-e 's|@PKGVER@|$(ARCH_PKGVER)|g' \
|
|
-e 's|@REPO_DIR@|$(ARCH_REPO_DIR)|g' \
|
|
"$(ARCH_PKG_TMPL)" > "$(ARCH_PKGBUILD)"
|
|
|
|
browser-bridge:
|
|
go build ./cmd/keepassgo-browser-bridge
|
|
|
|
browser-extension-validate:
|
|
@command -v xvfb-run >/dev/null 2>&1 || { echo "xvfb-run is required"; exit 1; }
|
|
@command -v firefox >/dev/null 2>&1 || { echo "firefox is required"; exit 1; }
|
|
@command -v openssl >/dev/null 2>&1 || { echo "openssl is required"; exit 1; }
|
|
xvfb-run -a python scripts/validate_browser_extension.py $(if $(BROWSER),--browser $(BROWSER),)
|