Skip to content

Commit

Permalink
Build native lib for arm64
Browse files Browse the repository at this point in the history
Signed-off-by: Fabio Di Fabio <[email protected]>
  • Loading branch information
fab-10 committed May 3, 2024
1 parent 4c34399 commit d31a695
Show file tree
Hide file tree
Showing 6 changed files with 50 additions and 37 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}

- name: Build without tests
run: ./gradlew build -PreleaseVersion=${{ steps.get_version.outputs.VERSION }} -x test -x spotlessCheck
run: ./gradlew build -PreleaseNativeLibs -PreleaseVersion=${{ steps.get_version.outputs.VERSION }} -x test -x spotlessCheck
env:
JAVA_OPTS: -Xmx2g -Dorg.gradle.daemon=false

Expand Down
File renamed without changes.
10 changes: 8 additions & 2 deletions native/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,26 @@ OSTYPE=$(uname -o)

# delete old build dir, if exists
rm -rf "$SCRIPTDIR/compress/build/native" || true
mkdir -p "$SCRIPTDIR/compress/build/native"

ARCH_DIR=""

if [ x"$OSTYPE" = x"msys" ]; then
LIBRARY_EXTENSION=dll
elif [ x"$OSTYPE" = x"GNU/Linux" ]; then
LIBRARY_EXTENSION=so
ARCHITECTURE="$(uname --machine)"
ARCH_DIR="linux-$ARCHITECTURE"
elif [ x"$OSTYPE" = x"Darwin" ]; then
LIBRARY_EXTENSION=dylib
else
echo "*** Unknown OS: $OSTYPE"
exit 1
fi

DEST_DIR="$SCRIPTDIR/compress/build/native/$ARCH_DIR"
mkdir -p "$DEST_DIR"

cd "$SCRIPTDIR/compress/compress-jni"
echo "Building Go module libcompress_jni.$LIBRARY_EXTENSION for $OSTYPE"
CGO_ENABLED=1 go build -buildmode=c-shared -o libcompress_jni.$LIBRARY_EXTENSION compress-jni.go
mv libcompress_jni.* "$SCRIPTDIR/compress/build/native"
mv libcompress_jni.* "$DEST_DIR"
26 changes: 9 additions & 17 deletions native/compress/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,15 @@ test {
}

tasks.register('buildJNI', Exec) {
if(org.gradle.internal.os.OperatingSystem.current().isWindows()) {
if(project.hasProperty("releaseNativeLibs")) {
workingDir buildscript.sourceFile.parentFile.parentFile
commandLine 'wsl', './wsl.sh'
commandLine 'sh', '-c', './release.sh'
} else if(org.gradle.internal.os.OperatingSystem.current().isWindows()) {
workingDir buildscript.sourceFile.parentFile.parentFile
commandLine 'wsl', './release.sh'
} else {
workingDir buildscript.sourceFile.parentFile
commandLine 'sh', '-c', '../build.sh'
workingDir buildscript.sourceFile.parentFile.parentFile
commandLine 'sh', '-c', './build.sh'
}
}

Expand Down Expand Up @@ -70,13 +73,13 @@ tasks.register('macLibCopy', Copy) {
processResources.dependsOn macLibCopy

tasks.register('linuxLibCopy', Copy) {
from 'build/native/libcompress_jni.so'
from 'build/native/linux-x86_64/libcompress_jni.so'
into 'build/resources/main/linux-x86-64'
}
processResources.dependsOn linuxLibCopy

tasks.register('linuxArm64LibCopy', Copy) {
from 'build/native/libcompress_jni.so'
from 'build/native/linux-aarch64/libcompress_jni.so'
into 'build/resources/main/linux-aarch64'
}
processResources.dependsOn linuxArm64LibCopy
Expand All @@ -102,14 +105,3 @@ jar {
}

jar.dependsOn(buildJNI)

sourceSets {
main {
resources {
srcDirs '${buildDir}/darwin-aaarch64'
srcDirs '${buildDir}/darwin-x86-64'
srcDirs '${buildDir}/linux-gnu-x86_64'
srcDirs '${buildDir}/linux-gnu-aarch64'
}
}
}
32 changes: 32 additions & 0 deletions native/release.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/bin/bash -x

docker build -f Dockerfile-dockcross --build-arg IMAGE=windows-shared-x64 -t native-windows-shared-x64-cross-compile .
docker build -f Dockerfile-dockcross --build-arg IMAGE=linux-x64 -t native-linux-x64-cross-compile .
docker build -f Dockerfile-dockcross --build-arg IMAGE=linux-arm64 -t native-linux-arm64-cross-compile .

mkdir -p compress/build/native/linux-x86_64
mkdir -p compress/build/native/linux-aarch64

docker run --rm native-windows-shared-x64-cross-compile > compress/build/native/native-windows-shared-x64-cross-compile
docker run --rm native-linux-x64-cross-compile > compress/build/native/native-linux-x64-cross-compile
docker run --rm native-linux-arm64-cross-compile > compress/build/native/native-linux-arm64-cross-compile

chmod +x \
compress/build/native/native-windows-shared-x64-cross-compile \
compress/build/native/native-linux-x64-cross-compile \
compress/build/native/native-linux-arm64-cross-compile

OCI_EXE=docker \
compress/build/native/native-windows-shared-x64-cross-compile --image native-windows-shared-x64-cross-compile \
bash -c "cd compress/compress-jni &&
CGO_ENABLED=1 GOOS=windows GOARCH=amd64 go build -buildmode=c-shared -o ../build/native/compress_jni.dll compress-jni.go"

OCI_EXE=docker \
compress/build/native/native-linux-x64-cross-compile --image native-linux-x64-cross-compile \
bash -c "cd compress/compress-jni &&
CGO_ENABLED=1 go build -buildmode=c-shared -o ../build/native/linux-x86_64/libcompress_jni.so compress-jni.go"

OCI_EXE=docker \
compress/build/native/native-linux-arm64-cross-compile --image native-linux-arm64-cross-compile \
bash -c "cd compress/compress-jni &&
CGO_ENABLED=1 GOARCH=arm64 go build -buildmode=c-shared -o ../build/native/linux-aarch64/libcompress_jni.so compress-jni.go"
17 changes: 0 additions & 17 deletions native/wsl.sh

This file was deleted.

0 comments on commit d31a695

Please sign in to comment.