| #!/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} \ |
| "$@" |