0
0
mirror of https://github.com/signalapp/libsignal.git synced 2024-09-20 03:52:17 +02:00

Use a script instead of make for building the JNI native libraries

This commit is contained in:
Jack Lloyd 2020-11-04 12:30:59 -05:00
parent 304171fdf3
commit d5fd5ddf76
5 changed files with 26 additions and 76 deletions

View File

@ -1,62 +0,0 @@
.PHONY: android_libs desktop_libs
ANDROID_LIB_DIR=android/src/main/jniLibs
DESKTOP_LIB_DIR=java/src/main/resources
OUTPUT_DIR=../target
#RUSTFLAGS="-C link-args-s"
RUSTFLAGS=""
all: android_libs desktop_libs
android_libs: $(ANDROID_LIB_DIR)/armeabi-v7a/libsignal_jni.so \
$(ANDROID_LIB_DIR)/arm64-v8a/libsignal_jni.so \
$(ANDROID_LIB_DIR)/x86/libsignal_jni.so \
$(ANDROID_LIB_DIR)/x86_64/libsignal_jni.so
#desktop_libs: $(DESKTOP_LIB_DIR)/libsignal_jni.so $(DESKTOP_LIB_DIR)/libsignal_jni.dylib $(DESKTOP_LIB_DIR)/libsignal_jni.dll
desktop_libs: $(DESKTOP_LIB_DIR)/libsignal_jni.so
$(DESKTOP_LIB_DIR)/libsignal_jni.so:
cd ../rust/bridge/jni && RUSTFLAGS=$(RUSTFLAGS) cargo build --target x86_64-unknown-linux-gnu --release
mkdir -p $(DESKTOP_LIB_DIR)
cp $(OUTPUT_DIR)/x86_64-unknown-linux-gnu/release/libsignal_jni.so $(DESKTOP_LIB_DIR)
$(DESKTOP_LIB_DIR)/libsignal_jni.dylib:
cd ../rust/bridge/jni && RUSTFLAGS=$(RUSTFLAGS) cargo build --target x86_64-apple-darwin --release
mkdir -p $(DESKTOP_LIB_DIR)
cp target/x86_64-apple-darwin/release/libsignal_jni.dylib $(DESKTOP_LIB_DIR)
$(DESKTOP_LIB_DIR)/libsignal_jni.dll:
cd ../rust/bridge/jni && RUSTFLAGS=$(RUSTFLAGS) cargo build --target x86_64-pc-windows-msvc --release
mkdir -p $(DESKTOP_LIB_DIR)
cp target/x86_64-apple-darwin/release/libsignal_jni.dll $(DESKTOP_LIB_DIR)
$(ANDROID_LIB_DIR)/armeabi-v7a/libsignal_jni.so:
cd ../rust/bridge/jni && RUSTFLAGS=$(RUSTFLAGS) cargo ndk --target armv7-linux-androideabi --platform 19 -- build --release
mkdir -p $(ANDROID_LIB_DIR)/armeabi-v7a/
cp $(OUTPUT_DIR)/armv7-linux-androideabi/release/libsignal_jni.so $(ANDROID_LIB_DIR)/armeabi-v7a/
$(ANDROID_LIB_DIR)/arm64-v8a/libsignal_jni.so:
cd ../rust/bridge/jni && RUSTFLAGS=$(RUSTFLAGS) cargo ndk --target aarch64-linux-android --platform 21 -- build --release
mkdir -p $(ANDROID_LIB_DIR)/arm64-v8a
cp $(OUTPUT_DIR)/aarch64-linux-android/release/libsignal_jni.so $(ANDROID_LIB_DIR)/arm64-v8a
$(ANDROID_LIB_DIR)/x86/libsignal_jni.so:
cd ../rust/bridge/jni && RUSTFLAGS=$(RUSTFLAGS) cargo ndk --target i686-linux-android --platform 19 -- build --release
mkdir -p $(ANDROID_LIB_DIR)/x86
cp $(OUTPUT_DIR)/i686-linux-android/release/libsignal_jni.so $(ANDROID_LIB_DIR)/x86
$(ANDROID_LIB_DIR)/x86_64/libsignal_jni.so:
cd ../rust/bridge/jni && RUSTFLAGS=$(RUSTFLAGS) cargo ndk --target x86_64-linux-android --platform 21 -- build --release
mkdir -p $(ANDROID_LIB_DIR)/x86_64
cp $(OUTPUT_DIR)/x86_64-linux-android/release/libsignal_jni.so $(ANDROID_LIB_DIR)/x86_64
clean:
rm -f $(ANDROID_LIB_DIR)/x86_64/libsignal_jni.so
rm -f $(ANDROID_LIB_DIR)/x86/libsignal_jni.so
rm -f $(ANDROID_LIB_DIR)/arm64-v8a/libsignal_jni.so
rm -f $(ANDROID_LIB_DIR)/armeabi-v7a/libsignal_jni.so
rm -f $(DESKTOP_LIB_DIR)/libsignal_jni.dll
rm -f $(DESKTOP_LIB_DIR)/libsignal_jni.dylib
rm -f $(DESKTOP_LIB_DIR)/libsignal_jni.so

View File

@ -128,6 +128,3 @@ task installArchives(type: Upload) {
}
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn ':makeAndroid'
}

View File

@ -11,18 +11,11 @@ subprojects {
}
}
task makeAndroid(type:Exec) {
task makeJniLibraries(type:Exec) {
group 'Rust'
description 'Build the android libraries'
description 'Build the JNI libraries'
commandLine 'make', 'android_libs'
}
task makeDesktop(type:Exec) {
group 'Rust'
description 'Build the desktop libraries'
commandLine 'make', 'desktop_libs'
commandLine './build_jni.sh'
}
task makeAll() {

22
java/build_jni.sh Executable file
View File

@ -0,0 +1,22 @@
#!/bin/sh
#
# Copyright (C) 2020 Signal Messenger, LLC.
# SPDX-License-Identifier: AGPL-3.0-only
#
command -v shellcheck > /dev/null && shellcheck "$0" # Run shellcheck on this if available
# These paths are relative to the root directory
ANDROID_LIB_DIR=java/android/src/main/jniLibs
DESKTOP_LIB_DIR=java/java/src/main/resources
export RUSTFLAGS="-C link-args=-s"
cd ..
cargo build -Z unstable-options -p libsignal-jni --release --target x86_64-unknown-linux-gnu --out-dir=$DESKTOP_LIB_DIR
cargo ndk --target armv7-linux-androideabi --platform 19 -- build -Z unstable-options -p libsignal-jni --release --out-dir=$ANDROID_LIB_DIR/armeabi-v7a
cargo ndk --target aarch64-linux-android --platform 21 -- build -Z unstable-options -p libsignal-jni --release --out-dir=$ANDROID_LIB_DIR/arm64-v8a
cargo ndk --target i686-linux-android --platform 19 -- build -Z unstable-options -p libsignal-jni --release --out-dir=$ANDROID_LIB_DIR/x86
cargo ndk --target x86_64-linux-android --platform 21 -- build -Z unstable-options -p libsignal-jni --release --out-dir=$ANDROID_LIB_DIR/x86_64

View File

@ -156,5 +156,5 @@ artifacts {
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn ':makeDesktop'
compileTask -> compileTask.dependsOn ':makeJniLibraries'
}