From dd57254f8fd08df30a70c57fd01a203a55189184 Mon Sep 17 00:00:00 2001 From: Jack Lloyd Date: Fri, 6 Nov 2020 15:54:59 -0500 Subject: [PATCH] Move makefile and docker file into java subdir --- .dockerignore | 5 +++++ Dockerfile => java/Dockerfile | 2 +- Makefile => java/Makefile | 8 ++++---- java/android/build.gradle | 3 +++ java/build.gradle | 11 +++++++++-- java/build_jni.sh | 18 +++++++++++++----- java/java/build.gradle | 2 +- 7 files changed, 36 insertions(+), 13 deletions(-) create mode 100644 .dockerignore rename Dockerfile => java/Dockerfile (99%) rename Makefile => java/Makefile (84%) diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..00a75fbbc --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +/target +/java/build +/java/android/build +/java/java/build +/java/tests/build diff --git a/Dockerfile b/java/Dockerfile similarity index 99% rename from Dockerfile rename to java/Dockerfile index 78d49d028..4dffd0961 100644 --- a/Dockerfile +++ b/java/Dockerfile @@ -69,7 +69,7 @@ RUN rustup target add armv7-linux-androideabi aarch64-linux-android i686-linu # Pre-download Gradle. COPY java/gradle gradle -COPY java/gradlew . +COPY java/gradlew gradlew RUN ./gradlew --version RUN echo "${RUST_TOOLCHAIN}" > rust-toolchain diff --git a/Makefile b/java/Makefile similarity index 84% rename from Makefile rename to java/Makefile index b147b99de..2044d3dbb 100644 --- a/Makefile +++ b/java/Makefile @@ -12,17 +12,17 @@ default: java_build DOCKER_IMAGE := libsignal-builder docker_image: - $(DOCKER) build --build-arg UID=$$(id -u) --build-arg GID=$$(id -g) -t $(DOCKER_IMAGE) . + cd .. && $(DOCKER) build --build-arg UID=$$(id -u) --build-arg GID=$$(id -g) -t $(DOCKER_IMAGE) -f java/Dockerfile . java_build: DOCKER_EXTRA=$(shell [ -L build ] && P=$$(readlink build) && echo -v $$P/:$$P ) java_build: docker_image $(DOCKER) run --rm --user $$(id -u):$$(id -g) \ - -v `pwd`/:/home/libsignal/src $(DOCKER_EXTRA) $(DOCKER_IMAGE) \ + -v `cd .. && pwd`/:/home/libsignal/src $(DOCKER_EXTRA) $(DOCKER_IMAGE) \ sh -c "cp rust-toolchain src/; cd src/java; ./gradlew build" java_test: java_build $(DOCKER) run --rm --user $$(id -u):$$(id -g) \ - -v `pwd`/:/home/libsignal/src $(DOCKER_EXTRA) $(DOCKER_IMAGE) \ + -v `cd .. && pwd`/:/home/libsignal/src $(DOCKER_EXTRA) $(DOCKER_IMAGE) \ sh -c "cp rust-toolchain src/; cd src/java; ./gradlew test" SONATYPE_USERNAME ?= @@ -41,7 +41,7 @@ publish_java: docker_image @[ -n "$(SIGNING_KEY)" ] || ( echo "SIGNING_KEY is not set" && false ) @[ -n "$(SIGNING_KEY_PASSWORD)" ] || ( echo "SIGNING_KEY_PASSWORD is not set" && false ) $(DOCKER) run --rm --user $$(id -u):$$(id -g) \ - -v `pwd`/:/home/libsignal/src $(DOCKER_EXTRA) \ + -v `cd .. && pwd`/:/home/libsignal/src $(DOCKER_EXTRA) \ -v $(KEYRING_VOLUME):/home/libsignal/keyring \ $(DOCKER_IMAGE) \ sh -c "cp rust-toolchain src; cd src/java; ./gradlew uploadArchives \ diff --git a/java/android/build.gradle b/java/android/build.gradle index fb80cc66b..e7503182a 100644 --- a/java/android/build.gradle +++ b/java/android/build.gradle @@ -128,3 +128,6 @@ task installArchives(type: Upload) { } } +tasks.withType(JavaCompile) { + compileTask -> compileTask.dependsOn ':makeJniLibrariesAndroid' +} diff --git a/java/build.gradle b/java/build.gradle index 65cd71061..971f1dd6b 100644 --- a/java/build.gradle +++ b/java/build.gradle @@ -11,11 +11,18 @@ subprojects { } } -task makeJniLibraries(type:Exec) { +task makeJniLibrariesAndroid(type:Exec) { group 'Rust' description 'Build the JNI libraries' - commandLine './build_jni.sh' + commandLine './build_jni.sh', 'android' +} + +task makeJniLibrariesDesktop(type:Exec) { + group 'Rust' + description 'Build the JNI libraries' + + commandLine './build_jni.sh', 'desktop' } task makeAll() { diff --git a/java/build_jni.sh b/java/build_jni.sh index 41687729f..c092babe4 100755 --- a/java/build_jni.sh +++ b/java/build_jni.sh @@ -13,8 +13,16 @@ export RUSTFLAGS="-C link-args=-s" cd .. || exit -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 +if [ "$1" = 'desktop' ]; +then + cargo build -Z unstable-options -p libsignal-jni --release --target x86_64-unknown-linux-gnu --out-dir=$DESKTOP_LIB_DIR +elif [ "$1" = 'android' ]; +then + 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 +else + echo "Unknown target (use 'desktop' or 'android')" +fi + diff --git a/java/java/build.gradle b/java/java/build.gradle index 1cf831ad0..ad8b62950 100644 --- a/java/java/build.gradle +++ b/java/java/build.gradle @@ -156,5 +156,5 @@ artifacts { } tasks.withType(JavaCompile) { - compileTask -> compileTask.dependsOn ':makeJniLibraries' + compileTask -> compileTask.dependsOn ':makeJniLibrariesDesktop' }