Add cross compile parameterization for the java binding

This commit is contained in:
Stefan Bratanov 2022-11-29 10:56:31 +00:00
parent 12df969a26
commit 26ac90da96
3 changed files with 8 additions and 3 deletions

View File

@ -2,11 +2,14 @@ INCLUDE_DIRS = ../../src ../../blst/bindings
LIBRARY_FOLDER=src/main/resources/ethereum/ckzg4844/lib
CC_FLAGS=
ifeq ($(OS),Windows_NT)
CLANG_EXECUTABLE=clang
GRADLE_COMMAND=gradlew
CLANG_FLAGS=-shared
JNI_INCLUDE_FOLDER=win32
OS_ARCH=amd64
LIBRARY_RESOURCE=ckzg4844jni.dll
else
CLANG_EXECUTABLE=clang
@ -15,6 +18,7 @@ else
ifeq ($(UNAME_S),Linux)
CLANG_FLAGS=-fPIC -shared
JNI_INCLUDE_FOLDER=linux
OS_ARCH=amd64
LIBRARY_RESOURCE=libckzg4844jni.so
endif
ifeq ($(UNAME_S),Darwin)
@ -23,6 +27,7 @@ else
endif
CLANG_FLAGS=-dynamiclib
JNI_INCLUDE_FOLDER=darwin
OS_ARCH=x86_64
LIBRARY_RESOURCE=libckzg4844jni.dylib
endif
endif
@ -34,8 +39,8 @@ endif
all: build test
build:
mkdir -p ${LIBRARY_FOLDER}
${CLANG_EXECUTABLE} ${CLANG_FLAGS} -O -Wall ${addprefix -I,${INCLUDE_DIRS}} -I"${JAVA_HOME}/include" -I"${JAVA_HOME}/include/${JNI_INCLUDE_FOLDER}" -o ${LIBRARY_FOLDER}/${LIBRARY_RESOURCE} c_kzg_4844_jni.c c_kzg_4844.o ../../lib/libblst.a
mkdir -p ${LIBRARY_FOLDER}/${OS_ARCH}
${CLANG_EXECUTABLE} ${CC_FLAGS} ${CLANG_FLAGS} -O -Wall ${addprefix -I,${INCLUDE_DIRS}} -I"${JAVA_HOME}/include" -I"${JAVA_HOME}/include/${JNI_INCLUDE_FOLDER}" -o ${LIBRARY_FOLDER}/${OS_ARCH}/${LIBRARY_RESOURCE} c_kzg_4844_jni.c c_kzg_4844.o ../../lib/libblst.a
test:
${GRADLE_COMMAND} clean test

View File

@ -13,7 +13,7 @@ public class CKzg4844JNI {
static {
InputStream libraryResource = CKzg4844JNI.class.getResourceAsStream(
"lib/" + PLATFORM_NATIVE_LIBRARY_NAME);
"lib/" + System.getProperty("os.arch") + "/" + PLATFORM_NATIVE_LIBRARY_NAME);
if (libraryResource == null) {
try {
System.loadLibrary(LIBRARY_NAME);