@@ -5,11 +5,62 @@ OUT_DIR=$(REPO_ROOT)/bin
55CGO_ENABLED =0
66export GOROOT GO111MODULE CGO_ENABLED
77
8+ # Autodetect Android SDK and NDK
9+ ANDROID_HOME_RESOLVED: =$(if $(ANDROID_HOME ) ,$(ANDROID_HOME ) ,$(firstword $(wildcard $(HOME ) /Android/Sdk $(HOME ) /Library/Android/sdk) ) )
10+ ANDROID_NDK_LATEST: =$(shell ls -d $(ANDROID_HOME_RESOLVED ) /ndk/* 2>/dev/null | sort -V | tail -n 1)
11+
12+ UNAME_S := $(shell uname -s)
13+ HOST_OS_NAME := linux-x86_64
14+ ifeq ($(UNAME_S ) ,Darwin)
15+ HOST_OS_NAME := darwin-x86_64
16+ endif
17+
18+ ANDROID_NDK_TOOLCHAIN =$(ANDROID_NDK_LATEST ) /toolchains/llvm/prebuilt/$(HOST_OS_NAME ) /bin
19+ ANDROID_CC_ARM64 =$(ANDROID_NDK_TOOLCHAIN ) /aarch64-linux-android30-clang
20+ ANDROID_CC_X86_64 =$(ANDROID_NDK_TOOLCHAIN ) /x86_64-linux-android30-clang
21+
22+
823build :
924 go build -v -o " $( OUT_DIR) /sam-node" ./cmd/sam-node
1025 go build -v -o " $( OUT_DIR) /sam-hub" ./cmd/sam-hub
1126 go build -v -o " $( OUT_DIR) /mcp-client" ./cmd/mcp-client
1227
28+ .PHONY : mobile-ffi-host mobile-ffi-android mobile-ffi-android-x86_64 mobile-ffi-ios mobile-ffi mobile-app-apk mobile-app-apk-emulator
29+ mobile-ffi-host :
30+ mkdir -p " $( OUT_DIR) "
31+ CGO_ENABLED=1 go build -v -buildmode=c-shared -o " $( OUT_DIR) /libsam.so" ./mobile/sam-node-ffi
32+
33+ mobile-ffi-android :
34+ @if [ -z " $( ANDROID_NDK_LATEST) " ]; then \
35+ echo " Error: Android NDK not found under $( ANDROID_HOME_RESOLVED) /ndk/. Please install NDK (Side-by-side) via Android Studio or sdkmanager." >&2 ; \
36+ exit 1; \
37+ fi
38+ GOOS=android GOARCH=arm64 CGO_ENABLED=1 CC=$(ANDROID_CC_ARM64 ) go build -v -ldflags=" -checklinkname=0" -buildmode=c-shared -o " $( OUT_DIR) /android/libsam.so" ./mobile/sam-node-ffi
39+
40+ mobile-ffi-android-x86_64 :
41+ @if [ -z " $( ANDROID_NDK_LATEST) " ]; then \
42+ echo " Error: Android NDK not found under $( ANDROID_HOME_RESOLVED) /ndk/. Please install NDK (Side-by-side) via Android Studio or sdkmanager." >&2 ; \
43+ exit 1; \
44+ fi
45+ mkdir -p " $( OUT_DIR) /android-x86_64"
46+ GOOS=android GOARCH=amd64 CGO_ENABLED=1 CC=$(ANDROID_CC_X86_64 ) go build -v -ldflags=" -checklinkname=0" -buildmode=c-shared -o " $( OUT_DIR) /android-x86_64/libsam.so" ./mobile/sam-node-ffi
47+
48+ mobile-ffi-ios :
49+ mkdir -p " $( OUT_DIR) /ios"
50+ GOOS=ios GOARCH=arm64 CGO_ENABLED=1 go build -v -buildmode=c-archive -o " $( OUT_DIR) /ios/libsam.a" ./mobile/sam-node-ffi
51+
52+ mobile-ffi : mobile-ffi-host mobile-ffi-android mobile-ffi-android-x86_64 mobile-ffi-ios
53+
54+ mobile-app-apk : mobile-ffi-android
55+ mkdir -p mobile/sam-node-app/android/app/src/main/jniLibs/arm64-v8a
56+ cp " $( OUT_DIR) /android/libsam.so" mobile/sam-node-app/android/app/src/main/jniLibs/arm64-v8a/libsam.so
57+ cd mobile/sam-node-app && flutter build apk --release
58+
59+ mobile-app-apk-emulator : mobile-ffi-android-x86_64
60+ mkdir -p mobile/sam-node-app/android/app/src/main/jniLibs/x86_64
61+ cp " $( OUT_DIR) /android-x86_64/libsam.so" mobile/sam-node-app/android/app/src/main/jniLibs/x86_64/libsam.so
62+ cd mobile/sam-node-app && flutter build apk --release
63+
1364.PHONY : proto
1465proto :
1566 ./hack/gen-proto.sh
0 commit comments