diff --git a/java/README.md b/java/README.md new file mode 100644 index 000000000000..a5e813203e73 --- /dev/null +++ b/java/README.md @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + +MXNet Java Package +==================== +This directory and nested files contain MXNet Java package and language binding. + +## Installation +To install requirements for MXNet Java package, visit MXNet [Install Instruction](https://mxnet.apache.org/get_started) + +## Running the unit tests +For running unit tests, you will need the [Gradle build system](https://gradle.org/). To install: + * https://gradle.org/install/ + +Once ```gradle``` is installed, run the following from MXNet java subdirectory (please make sure the installation path of ```gradle``` is included in your ```$PATH``` environment variable): +``` +gradle clean build test -Dorg.gradle.jvmargs=-Xmx2048m +``` diff --git a/java/build.gradle b/java/build.gradle index f7ef4a680656..67bd4d3f7ffe 100644 --- a/java/build.gradle +++ b/java/build.gradle @@ -55,7 +55,18 @@ javacppBuildCompiler { copyLibs = true } +task copyLicenses(type: Copy) { + from(["$projectDir/..", "$projectDir/../tools/dependencies/"]) { + include 'DISCLAIMER-WIP' + include 'LICENSE' + include 'NOTICE' + include 'LICENSE.binary.dependencies' + } + into "$buildDir/resources/main/META-INF" +} + jar { + dependsOn copyLicenses manifest { attributes 'Class-Path': configurations.runtimeClasspath.collect { it.getName() }.join(' ') } diff --git a/java/build.sh b/java/build.sh index dd4ba584e2f7..05ba6f4a273f 100755 --- a/java/build.sh +++ b/java/build.sh @@ -1,11 +1,19 @@ #!/bin/bash set -e +if [[ -n "$MXNET_LIBRARY_PATH" ]]; then + echo Found MXNET_LIBRARY_PATH=$MXNET_LIBRARY_PATH + mkdir -p build/$PLATFORM$PLATFORM_EXTENSION/lib + cp -RLf ../include build/$PLATFORM$PLATFORM_EXTENSION/include + cp $MXNET_LIBRARY_PATH build/$PLATFORM$PLATFORM_EXTENSION/lib + exit 0 +fi + mkdir -p build/$PLATFORM$PLATFORM_EXTENSION/cmake pushd build/$PLATFORM$PLATFORM_EXTENSION/cmake if [[ -d "C:/msys64" ]] && [[ -z ${OpenBLAS_home:-} ]]; then - export OpenBLAS_HOME=C:/msys64/mingw64/include/OpenBlas/ + export OpenBLAS_HOME=C:/msys64/mingw64/include/OpenBLAS/ export OpenBLAS=C:/msys64/mingw64/lib/ fi diff --git a/java/src/main/java/org/apache/mxnet/internal/c_api/mxnet.java b/java/src/main/java/org/apache/mxnet/internal/c_api/mxnet.java index e8e5227cfa4d..37166fdffe28 100644 --- a/java/src/main/java/org/apache/mxnet/internal/c_api/mxnet.java +++ b/java/src/main/java/org/apache/mxnet/internal/c_api/mxnet.java @@ -35,11 +35,16 @@ define = {"DMLC_USE_CXX11 1", "MSHADOW_USE_CBLAS 1", "MSHADOW_IN_CXX11 1", "MSHADOW_USE_CUDA 0", "MSHADOW_USE_F16C 0", "MXNET_USE_TVM_OP 0"}, include = {"dlpack/dlpack.h", "mxnet/c_api.h", "mxnet/runtime/c_runtime_api.h", "nnvm/c_api.h"}, link = "mxnet", - linkpath = "/usr/local/lib/" + linkpath = {"/usr/lib64/", "/usr/lib/", "/usr/local/lib/"}, + preload = {"gfortran@.5", "gfortran@.4", "gfortran@.3"}, + preloadpath = {"/usr/local/lib/gcc/10/", "/usr/local/lib/gcc/9/", "/usr/local/lib/gcc/8/", + "/usr/local/lib/gcc/7/", "/usr/local/lib/gcc/6/", "/usr/local/lib/gcc/5/"} ), @Platform( value = "windows", - link = "libmxnet" + link = "libmxnet", + preload = {"libwinpthread-1", "libgcc_s_seh-1", "libgfortran-5", "libgfortran-4", "libgfortran-3", "libopenblas"}, + preloadpath = "C:/msys64/mingw64/bin/" ) }, target = "org.apache.mxnet.internal.c_api",