blob: a38ea564bef604df2184fec5706204c64bfebc91 [file] [log] [blame]
#!/usr/bin/env bash
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# Build the TVM JVM package (tvm4j) using Maven with platform detection.
# Usage: task_jvm_build.sh [goal] [mvn-extra-args...]
#
# The first positional argument sets the Maven goal (default: "clean package").
# Extra arguments after the goal are passed through to mvn, e.g.:
# task_jvm_build.sh install
# task_jvm_build.sh "clean package" -DskipTests=false -Dtest.tempdir=/tmp/foo
set -euxo pipefail
GOAL="${1:-clean package}"
if [ "$#" -gt 0 ]; then
shift
fi
ROOTDIR="$(cd "$(dirname "$0")/../.." && pwd)"
TVM_BUILD_PATH="${TVM_BUILD_PATH:-${ROOTDIR}/build}"
TVM_BUILD_PATH="$(realpath "${TVM_BUILD_PATH}")"
DLPACK_PATH="${DLPACK_PATH:-${ROOTDIR}/3rdparty/tvm-ffi/3rdparty/dlpack}"
INCLUDE_FLAGS="-I${ROOTDIR}/include -I${DLPACK_PATH}/include"
PKG_CFLAGS="-Wall -O3 ${INCLUDE_FLAGS} -fPIC"
PKG_LDFLAGS=""
if [ "$(uname -s)" = "Darwin" ]; then
JVM_PKG_PROFILE="osx-x86_64"
SHARED_LIBRARY_SUFFIX="dylib"
elif [ "${OS:-}" = "Windows_NT" ]; then
JVM_PKG_PROFILE="windows"
SHARED_LIBRARY_SUFFIX="dll"
else
JVM_PKG_PROFILE="linux-x86_64"
SHARED_LIBRARY_SUFFIX="so"
fi
JVM_TEST_ARGS="${JVM_TEST_ARGS:--DskipTests -Dcheckstyle.skip=true}"
cd "${ROOTDIR}/jvm"
# shellcheck disable=SC2086
mvn ${GOAL} \
"-P${JVM_PKG_PROFILE}" \
"-Dcxx=${CXX:-g++}" \
"-Dcflags=${PKG_CFLAGS}" \
"-Dldflags=${PKG_LDFLAGS}" \
"-Dcurrent_libdir=${TVM_BUILD_PATH}" \
${JVM_TEST_ARGS} \
"$@"