From 4313006fa6995dd9b22115b3002770d006e246df Mon Sep 17 00:00:00 2001 From: Uladzimir Karpenka Date: Fri, 12 Jun 2026 21:31:15 +0300 Subject: [PATCH] Auto-detect Android NDK and javac paths in Makefile.android Remove hardcoded /home/vladimir and /opt paths. NDK is now resolved via ANDROID_NDK_HOME, ANDROID_SDK_ROOT/ANDROID_HOME, or the default SDK location for Linux/macOS (latest version picked automatically). javac is resolved via JAVA_HOME, system PATH, or Android Studio JBR on Linux/macOS. Co-Authored-By: Claude Sonnet 4.6 --- Makefile.android | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/Makefile.android b/Makefile.android index e1c2586..5ce574d 100644 --- a/Makefile.android +++ b/Makefile.android @@ -8,13 +8,36 @@ # FFTW source is downloaded and extracted automatically. # Override FFTW_SRC to use an existing directory. -ANDROID_NDK ?= /home/vladimir/Android/Sdk/ndk/29.0.14206865 +# Auto-detect NDK path (can always be overridden by setting ANDROID_NDK explicitly): +# 1. ANDROID_NDK_HOME environment variable +# 2. Latest NDK under ANDROID_SDK_ROOT or ANDROID_HOME +# 3. Default SDK locations: ~/Android/Sdk (Linux) or ~/Library/Android/sdk (macOS) +ifeq ($(origin ANDROID_NDK),undefined) + ifdef ANDROID_NDK_HOME + ANDROID_NDK := $(ANDROID_NDK_HOME) + else + _SDK_ROOT := $(or $(ANDROID_SDK_ROOT),$(ANDROID_HOME),\ + $(wildcard $(HOME)/Android/Sdk),\ + $(wildcard $(HOME)/Library/Android/sdk)) + ifdef _SDK_ROOT + ANDROID_NDK := $(lastword $(sort $(wildcard $(_SDK_ROOT)/ndk/*))) + endif + endif +endif +ifndef ANDROID_NDK + $(error Cannot find Android NDK. Set ANDROID_NDK, ANDROID_NDK_HOME, ANDROID_SDK_ROOT, or ANDROID_HOME) +endif ANDROID_API ?= 24 ANDROID_ABIS ?= arm64-v8a armeabi-v7a x86_64 ANDROID_HOST_TAG ?= $(shell uname -s | tr '[:upper:]' '[:lower:]' | sed 's/darwin/darwin/;s/linux/linux/')-$(shell uname -m | sed 's/aarch64/arm64/;s/x86_64/x86_64/') -JBR_BIN ?= /opt/android-studio/jbr/bin -JAVAC ?= $(JBR_BIN)/javac +# Auto-detect javac: JAVA_HOME > system PATH > Android Studio JBR (Linux/macOS) +_JAVAC_CANDIDATES := \ + $(if $(JAVA_HOME),$(wildcard $(JAVA_HOME)/bin/javac)) \ + $(shell command -v javac 2>/dev/null) \ + $(wildcard /opt/android-studio/jbr/bin/javac) \ + $(wildcard /Applications/Android\ Studio.app/Contents/jbr/Contents/Home/bin/javac) +JAVAC ?= $(firstword $(_JAVAC_CANDIDATES)) TOOLCHAIN := $(ANDROID_NDK)/toolchains/llvm/prebuilt/$(ANDROID_HOST_TAG)