libxgboost4j is now part of the CMake build (#2373)
* [jvm-packages] Added libxgboost4j to CMake build * [jvm-packages] Wired CMake build into create_jni.sh * User newer CMake version on Travis * Lowered CMake version constraints * Fixed various quirks in the new CMake build
This commit is contained in:
committed by
Tianqi Chen
parent
ed6384ecbf
commit
2d9052bc7d
@@ -9,18 +9,21 @@ pushd `dirname $0` > /dev/null
|
||||
|
||||
#settings according to os
|
||||
dl="so"
|
||||
dis_omp=0
|
||||
USE_OMP=ON
|
||||
|
||||
if [ $(uname) == "Darwin" ]; then
|
||||
export JAVA_HOME=$(/usr/libexec/java_home)
|
||||
dl="dylib"
|
||||
#change this to 0 if your compiler support openmp
|
||||
dis_omp=1
|
||||
USE_OMP=OFF
|
||||
fi
|
||||
|
||||
cd ..
|
||||
make jvm no_omp=${dis_omp}
|
||||
cd jvm-packages
|
||||
mkdir -p build
|
||||
cd build
|
||||
cmake .. -DJVM_BINDINGS:BOOL=ON -DUSE_OPENMP:BOOL=${USE_OMP}
|
||||
make
|
||||
cd ../jvm-packages
|
||||
echo "move native lib"
|
||||
|
||||
libPath="xgboost4j/src/main/resources/lib"
|
||||
@@ -29,7 +32,7 @@ if [ ! -d "$libPath" ]; then
|
||||
fi
|
||||
|
||||
rm -f xgboost4j/src/main/resources/lib/libxgboost4j.${dl}
|
||||
mv lib/libxgboost4j.so xgboost4j/src/main/resources/lib/libxgboost4j.${dl}
|
||||
cp ../lib/libxgboost4j.${dl} xgboost4j/src/main/resources/lib/libxgboost4j.${dl}
|
||||
# copy python to native resources
|
||||
cp ../dmlc-core/tracker/dmlc_tracker/tracker.py xgboost4j/src/main/resources/tracker.py
|
||||
# copy test data files
|
||||
|
||||
@@ -31,7 +31,7 @@ class NativeLibLoader {
|
||||
private static final Log logger = LogFactory.getLog(NativeLibLoader.class);
|
||||
|
||||
private static boolean initialized = false;
|
||||
private static final String nativePath = "../lib/";
|
||||
private static final String nativePath = "../../lib/";
|
||||
private static final String nativeResourcePath = "/lib/";
|
||||
private static final String[] libNames = new String[]{"xgboost4j"};
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
// set handle
|
||||
void setHandle(JNIEnv *jenv, jlongArray jhandle, void* handle) {
|
||||
#ifdef __APPLE__
|
||||
long out = (long) handle;
|
||||
jlong out = (long) handle;
|
||||
#else
|
||||
int64_t out = (int64_t) handle;
|
||||
#endif
|
||||
@@ -76,7 +76,8 @@ XGB_EXTERN_C int XGBoost4jCallbackDataIterNext(
|
||||
batch, jenv->GetFieldID(batchClass, "featureValue", "[F"));
|
||||
XGBoostBatchCSR cbatch;
|
||||
cbatch.size = jenv->GetArrayLength(joffset) - 1;
|
||||
cbatch.offset = jenv->GetLongArrayElements(joffset, 0);
|
||||
cbatch.offset = reinterpret_cast<long *>(
|
||||
jenv->GetLongArrayElements(joffset, 0));
|
||||
if (jlabel != nullptr) {
|
||||
cbatch.label = jenv->GetFloatArrayElements(jlabel, 0);
|
||||
CHECK_EQ(jenv->GetArrayLength(jlabel), static_cast<long>(cbatch.size))
|
||||
@@ -103,7 +104,8 @@ XGB_EXTERN_C int XGBoost4jCallbackDataIterNext(
|
||||
CHECK_EQ((*set_function)(set_function_handle, cbatch), 0)
|
||||
<< XGBGetLastError();
|
||||
// release the elements.
|
||||
jenv->ReleaseLongArrayElements(joffset, cbatch.offset, 0);
|
||||
jenv->ReleaseLongArrayElements(
|
||||
joffset, reinterpret_cast<jlong *>(cbatch.offset), 0);
|
||||
jenv->DeleteLocalRef(joffset);
|
||||
if (jlabel != nullptr) {
|
||||
jenv->ReleaseFloatArrayElements(jlabel, cbatch.label, 0);
|
||||
|
||||
Reference in New Issue
Block a user