• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/bash
2# Copyright 2021-2022 Huawei Technologies Co., Ltd
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15# ============================================================================
16
17set -e
18
19checkndk() {
20    if [ "${ANDROID_NDK}" ]; then
21        echo -e "\e[31mANDROID_NDK=$ANDROID_NDK  \e[0m"
22    else
23        echo -e "\e[31mplease set ANDROID_NDK in environment variable for example: export ANDROID_NDK=/root/usr/android-ndk-r20b/ \e[0m"
24        exit 1
25    fi
26}
27
28check_Hi35xx() {
29  if [[ "X${HI35XX_SDK_PATH}" == "X" ]]; then
30    echo "error: to compile the runtime package of Hi35XX, you need to set HI35XX_SDK_PATH to declare the path of Hi35XX sdk."
31    exit 1
32  else
33    cp -r ${HI35XX_SDK_PATH}/third_patry ${BASEPATH}/mindspore/lite/providers/nnie
34  fi
35}
36
37get_version() {
38    VERSION_STR=$(cat ${BASEPATH}/version.txt)
39}
40
41get_cpack_dir() {
42    # ${CPACK_PACKAGE_DIR}/${pkg_name} is the output of package_lite.cmake(make package)
43    # ${INSTALL_PREFIX}/${pkg_name} is the output of make install
44    # please use ${CPACK_PACKAGE_DIR}/${pkg_name} instead of ${INSTALL_PREFIX}/${pkg_name}
45    local pack_dir="_CPack_Packages"
46    local ms_pack="mindspore-lite-${VERSION_STR}"
47    local cpack_dir="${INSTALL_PREFIX}/${pack_dir}"
48
49    local linux_x86_path="${cpack_dir}/Linux/TGZ/${ms_pack}/linux-x64"
50    local linux_cortex_path="${cpack_dir}/Linux/TGZ/${ms_pack}/none-cortex-m7"
51    local linux_aarch64_path="${cpack_dir}/Linux/TGZ/${ms_pack}/linux-aarch64"
52    local linux_aarch32_path="${cpack_dir}/Linux/TGZ/${ms_pack}/linux-aarch32"
53    local android_aarch64_path="${cpack_dir}/Android/TGZ/${ms_pack}/android-aarch64"
54    local android_aarch32_path="${cpack_dir}/Android/TGZ/${ms_pack}/android-aarch32"
55
56    CPACK_PACKAGE_DIR=""
57    if [ -d "${linux_x86_path}" ]; then
58      CPACK_PACKAGE_DIR=${linux_x86_path}
59    elif [ -d "${linux_cortex_path}" ]; then
60      CPACK_PACKAGE_DIR=${linux_cortex_path}
61    elif [ -d "${linux_aarch64_path}" ]; then
62      CPACK_PACKAGE_DIR=${linux_aarch64_path}
63    elif [ -d "${linux_aarch32_path}" ]; then
64      CPACK_PACKAGE_DIR=${linux_aarch32_path}
65    elif [ -d "${android_aarch64_path}" ]; then
66      CPACK_PACKAGE_DIR=${android_aarch64_path}
67    elif [ -d "${android_aarch32_path}" ]; then
68      CPACK_PACKAGE_DIR=${android_aarch32_path}
69    else
70      echo "Please check cpack path."
71    fi
72    echo "Using cpack output path: ${CPACK_PACKAGE_DIR}"
73}
74
75write_commit_file() {
76    COMMIT_STR=$(git log -1 | grep commit)
77    echo ${COMMIT_STR} > "${BASEPATH}/mindspore/lite/build/.commit_id"
78}
79
80build_lite_jni_and_jar() {
81    local JNI_CMAKE_ARGS=$1
82    local local_lite_platform=$2
83    echo "============ mindspore lite: start building jni and jar ${VERSION_STR} ${local_lite_platform} ============"
84    export MSLITE_ENABLE_RUNTIME_CONVERT=off
85
86    local PKG_NAME
87    local NATIVE_PATH_ARCH
88    local RESOURCE_PATH_ARCH
89    if [[ "${local_lite_platform}" == "x86_64" ]]; then
90      PKG_NAME=mindspore-lite-${VERSION_STR}-linux-x64
91      NATIVE_PATH_ARCH=linux_x86
92      RESOURCE_PATH_ARCH=linux_x86_64
93    elif [[ "${local_lite_platform}" == "aarch64" ]]; then
94      PKG_NAME=mindspore-lite-${VERSION_STR}-linux-aarch64
95      NATIVE_PATH_ARCH=linux_aarch64
96      RESOURCE_PATH_ARCH=linux_aarch64
97      JNI_CMAKE_ARGS="${JNI_CMAKE_ARGS} -DMACHINE_LINUX_ARM64=on"
98    else
99      echo "platform: ${local_lite_platform} not support building jni."
100      exit 0
101    fi
102
103    # copy so
104    local is_train=on
105    local is_cloud_infer=off
106    cd ${INSTALL_PREFIX}/
107
108    rm -rf ${PKG_NAME}
109    tar -zxf ${INSTALL_PREFIX}/${PKG_NAME}.tar.gz
110    rm -rf ${LITE_JAVA_PATH}/java/${NATIVE_PATH_ARCH}/libs/   && mkdir -pv ${LITE_JAVA_PATH}/java/${NATIVE_PATH_ARCH}/libs/
111    rm -rf ${LITE_JAVA_PATH}/native/libs/${NATIVE_PATH_ARCH}/ && mkdir -pv ${LITE_JAVA_PATH}/native/libs/${NATIVE_PATH_ARCH}/
112    cp ./${PKG_NAME}/runtime/lib/*.so* ${LITE_JAVA_PATH}/java/${NATIVE_PATH_ARCH}/libs/
113    cp ./${PKG_NAME}/runtime/lib/*.so* ${LITE_JAVA_PATH}/native/libs/${NATIVE_PATH_ARCH}/
114    local train_so=${PKG_NAME}/runtime/lib/libmindspore-lite-train.so
115    if [ ! -f "$train_so" ]; then
116        echo "libmindspore-lite-train.so so not exist"
117        is_train=off
118    fi
119    if [[ "X$is_train" = "Xon" ]]; then
120        cp ./${PKG_NAME}/runtime/third_party/libjpeg-turbo/lib/*.so* ${LITE_JAVA_PATH}/java/${NATIVE_PATH_ARCH}/libs/
121        cp ./${PKG_NAME}/runtime/third_party/libjpeg-turbo/lib/*.so* ${LITE_JAVA_PATH}/native/libs/${NATIVE_PATH_ARCH}/
122    fi
123    # prepare
124    cd ${BASEPATH}/mindspore/lite/build
125    rm -rf java/jni && mkdir -pv java/jni
126    cd java/jni
127    # copy glog lib and headers
128    LIB_GLOG="libmindspore_glog.so*"
129    if [ -f "`echo ${INSTALL_PREFIX}/${PKG_NAME}/runtime/third_party/glog/${LIB_GLOG}`" ]; then
130      cp ${INSTALL_PREFIX}/${PKG_NAME}/runtime/third_party/glog/*.so* ${LITE_JAVA_PATH}/java/${NATIVE_PATH_ARCH}/libs/
131      cp ${INSTALL_PREFIX}/${PKG_NAME}/runtime/third_party/glog/*.so* ${LITE_JAVA_PATH}/native/libs/${NATIVE_PATH_ARCH}/
132    else
133      echo "no glog lib found."
134    fi
135    if [ -d "${BASEPATH}/output/tmp/${PKG_NAME}/runtime/include/third_party/glog" ]; then
136        rm -rf jni_include && mkdir jni_include
137        cp ${BASEPATH}/output/tmp/${PKG_NAME}/runtime/include/third_party/glog  ./jni_include -r
138    else
139        echo "no glog hesders found."
140    fi
141    # build jni so
142    echo "cmake ${JNI_CMAKE_ARGS} -DSUPPORT_TRAIN=${is_train} ${LITE_JAVA_PATH}/native/"
143    cmake ${JNI_CMAKE_ARGS} -DSUPPORT_TRAIN=${is_train} "${LITE_JAVA_PATH}/native/"
144    make -j$THREAD_NUM
145    if [[ $? -ne 0 ]]; then
146        echo "---------------- mindspore lite: build jni ${local_lite_platform} failed----------------"
147        exit 1
148    fi
149    rm -f ${LITE_JAVA_PATH}/src/main/resources/com/mindspore/lite/${RESOURCE_PATH_ARCH}/*.so*
150    cp ./libmindspore-lite-jni.so ${LITE_JAVA_PATH}/java/${NATIVE_PATH_ARCH}/libs/
151    cp ./libmindspore-lite-jni.so ${LITE_JAVA_PATH}/native/libs/${NATIVE_PATH_ARCH}/
152    cp ./libmindspore-lite-jni.so ${INSTALL_PREFIX}/${PKG_NAME}/runtime/lib/
153
154    if [[ "$MSLITE_ENABLE_CLOUD_FUSION_INFERENCE" == "ON" || "$MSLITE_ENABLE_CLOUD_FUSION_INFERENCE" == "on" ]];then
155      is_cloud_infer=on
156    fi
157    if [[ "$MSLITE_ENABLE_CLOUD_INFERENCE" == "ON" || "$MSLITE_ENABLE_CLOUD_INFERENCE" == "on" ]];then
158      is_cloud_infer=on
159    fi
160
161    RUNTIME_LIB_DIR="${BASEPATH}/output/tmp/${PKG_NAME}/runtime/lib"
162    if [[ -d ${RUNTIME_LIB_DIR} ]]; then
163      if [ "$(ls -A ${RUNTIME_LIB_DIR})" ]; then
164        cp ${RUNTIME_LIB_DIR}/*.so ${LITE_JAVA_PATH}/src/main/resources/com/mindspore/lite/${RESOURCE_PATH_ARCH}/
165      fi
166    fi
167    CONVERTER_LIB_DIR="${BASEPATH}/output/tmp/${PKG_NAME}/tools/converter/lib"
168    if [[ "X$is_cloud_infer" = "Xon" && -d ${CONVERTER_LIB_DIR} ]]; then
169      if [ "$(ls -A ${CONVERTER_LIB_DIR})" ]; then
170        cp ${CONVERTER_LIB_DIR}/*.so ${LITE_JAVA_PATH}/src/main/resources/com/mindspore/lite/${RESOURCE_PATH_ARCH}/
171      fi
172    fi
173
174    if [ -f "`echo ${BASEPATH}/output/tmp/${PKG_NAME}/tools/converter/lib/${LIB_GLOG}`" ]; then
175      cp ${BASEPATH}/output/tmp/${PKG_NAME}/tools/converter/lib/libmindspore_glog.so* ${LITE_JAVA_PATH}/src/main/resources/com/mindspore/lite/${RESOURCE_PATH_ARCH}/libmindspore_glog.so
176    fi
177    LIB_OPENCV_IMGPROC="libopencv_imgproc.so*"
178    if [[ "X$is_cloud_infer" = "Xon" && -f "`echo ${BASEPATH}/output/tmp/${PKG_NAME}/tools/converter/lib/${LIB_OPENCV_IMGPROC}`" ]]; then
179      cp ${BASEPATH}/output/tmp/${PKG_NAME}/tools/converter/lib/${LIB_OPENCV_IMGPROC} ${LITE_JAVA_PATH}/src/main/resources/com/mindspore/lite/${RESOURCE_PATH_ARCH}/libopencv_imgproc.so
180    fi
181    LIB_OPENCV_CORE="libopencv_core.so*"
182    if [[ "X$is_cloud_infer" = "Xon" && -f "`echo ${BASEPATH}/output/tmp/${PKG_NAME}/tools/converter/lib/${LIB_OPENCV_CORE}`" ]]; then
183      cp ${BASEPATH}/output/tmp/${PKG_NAME}/tools/converter/lib/${LIB_OPENCV_CORE} ${LITE_JAVA_PATH}/src/main/resources/com/mindspore/lite/${RESOURCE_PATH_ARCH}/libopencv_core.so
184    fi
185    LIB_OPENCV_IMGCODECS="libopencv_imgcodecs.so*"
186    if [[ "X$is_cloud_infer" = "Xon" && -f "`echo ${BASEPATH}/output/tmp/${PKG_NAME}/tools/converter/lib/${LIB_OPENCV_IMGCODECS}`" ]]; then
187      cp ${BASEPATH}/output/tmp/${PKG_NAME}/tools/converter/lib/${LIB_OPENCV_IMGCODECS} ${LITE_JAVA_PATH}/src/main/resources/com/mindspore/lite/${RESOURCE_PATH_ARCH}/libopencv_imgcodecs.so
188    fi
189    LIB_DNNL="libdnnl.so*"
190    if [[ "X$is_cloud_infer" = "Xon" && -f "`echo ${BASEPATH}/output/tmp/${PKG_NAME}/runtime/third_party/dnnl/${LIB_DNNL}`" ]]; then
191      cp ${BASEPATH}/output/tmp/${PKG_NAME}/runtime/third_party/dnnl/${LIB_DNNL} ${LITE_JAVA_PATH}/src/main/resources/com/mindspore/lite/${RESOURCE_PATH_ARCH}/libdnnl.so
192    fi
193
194    if [[ "X$is_train" = "Xon" ]]; then
195      cp ./libmindspore-lite-train-jni.so ${LITE_JAVA_PATH}/java/${NATIVE_PATH_ARCH}/libs/
196      cp ./libmindspore-lite-train-jni.so ${LITE_JAVA_PATH}/native/libs/${NATIVE_PATH_ARCH}/
197      cp ./libmindspore-lite-train-jni.so ${INSTALL_PREFIX}/${PKG_NAME}/runtime/lib/
198      cp ./libmindspore-lite-train-jni.so ${LITE_JAVA_PATH}/src/main/resources/com/mindspore/lite/${RESOURCE_PATH_ARCH}/
199    fi
200
201    chmod -R 750 ${LITE_JAVA_PATH}/src/main/resources/com/mindspore/lite
202    cd ${LITE_JAVA_PATH}/java
203    rm -rf gradle .gradle gradlew gradlew.bat
204    local gradle_version=""
205    gradle_version=`gradle --version | grep Gradle | awk '{print$2}'`
206    if [[ ${gradle_version} == '6.6.1' ]]; then
207      gradle_command=gradle
208    else
209      gradle wrapper --gradle-version 6.6.1 --distribution-type all
210      gradle_command=${LITE_JAVA_PATH}/java/gradlew
211    fi
212
213    # build jar
214    ${gradle_command} clean -p ${LITE_JAVA_PATH}/
215    if [[ "${ENABLE_ASAN}" == "ON" || "${ENABLE_ASAN}" == "on" ]] ; then
216      ${gradle_command} releaseJar -p ${LITE_JAVA_PATH}/ -x test --info
217    else
218      if [[ "${MSLITE_ENABLE_TESTCASES}" == "ON" || "${MSLITE_ENABLE_TESTCASES}" == "on" ]] ; then
219          export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${LITE_JAVA_PATH}/native/libs/${NATIVE_PATH_ARCH}/
220          ${gradle_command} releaseJar -p ${LITE_JAVA_PATH}/ --info
221      else
222           ${gradle_command} releaseJar -p ${LITE_JAVA_PATH}/ -x test --info
223      fi
224    fi
225    cp ${LITE_JAVA_PATH}/build/lib/jar/*.jar ${INSTALL_PREFIX}/${PKG_NAME}/runtime/lib/
226
227    # package
228    cd ${INSTALL_PREFIX}
229    rm -rf ${PKG_NAME}.tar.gz ${PKG_NAME}.tar.gz.sha256
230    tar czf ${PKG_NAME}.tar.gz ${PKG_NAME}
231    sha256sum ${PKG_NAME}.tar.gz > ${PKG_NAME}.tar.gz.sha256
232    rm -rf ${LITE_JAVA_PATH}/java/${NATIVE_PATH_ARCH}/libs/
233    rm -rf ${LITE_JAVA_PATH}/native/libs/${NATIVE_PATH_ARCH}/
234    echo "---------------- mindspore lite jni and jar: build success ----------------"
235}
236
237get_python_tag(){
238    local minor_version=`python3 -V 2>&1 | awk '{print $2}' | awk -F '.' '{print $2}'` || true
239    local py_tags="cp${python_version}${minor_version}-cp${python_version}${minor_version}"
240    if [[ "${minor_version}" == "7" ]]; then
241      py_tags="cp37-cp37m"
242    fi
243    echo ${py_tags}
244}
245
246build_akg() {
247  local python_version=`python3 -V 2>&1 | awk '{print $2}' | awk -F '.' '{print $1}'` || true
248  if [[ "${python_version}" == "3" ]]; then
249    echo "---------------- AKG: build start ----------------"
250    AKG_DIR=${BASEPATH}/akg
251    BUILD_DIR=${BASEPATH}/mindspore/lite/build
252    write_version() {
253        cd ${AKG_DIR}
254        if [ ! -e ${AKG_DIR}/version.txt ]; then
255            version=$(git branch | sed -n '/\* /s///p')
256            if [ -z "${version}" ]; then
257                version='master'
258            fi
259            echo ${version#r} >${BUILD_DIR}/akg/version.txt
260        else
261          cp ${AKG_DIR}/version.txt ${BUILD_DIR}/akg
262        fi
263        cp ${AKG_DIR}/setup.py ${BUILD_DIR}/akg/akg_setup.py
264    }
265    cd ${BUILD_DIR}
266    mkdir -pv akg
267    write_version
268    cd ${BUILD_DIR}/akg
269    mkdir -pv build
270    cd build
271    if [[ "X${DEBUG_MODE}" == "Xon" ]]; then
272        AKG_CMAKE_ARGS="${AKG_CMAKE_ARGS}  -DCMAKE_BUILD_TYPE=Debug -DUSE_AKG_LOG=1"
273    fi
274    # check llvm version for akg
275    AKG_CMAKE_ARGS="${AKG_CMAKE_ARGS} -DUSE_RPC=ON "
276    USE_LLVM=`bash ${BASEPATH}/scripts/build/akg_find_llvm.sh`
277    if [[ "X$USE_LLVM" == "Xon" ]]; then
278        graph_kernel_cfg="-DAKG_USE_LLVM=ON ${graph_kernel_cfg}"
279        AKG_CMAKE_ARGS="${AKG_CMAKE_ARGS} -DUSE_LLVM=ON"
280    fi
281    if [[ ("X${MSLITE_GPU_BACKEND}" == "Xtensorrt") && $1 == "x86_64" ]]; then
282        AKG_CMAKE_ARGS="${AKG_CMAKE_ARGS} -DUSE_CUDA=ON"
283        graph_kernel_cfg="-DAKG_USE_CUDA=ON ${graph_kernel_cfg}"
284    fi
285    if [[ ("X${MSLITE_ENABLE_ACL}" == "Xon") ]]; then
286        AKG_CMAKE_ARGS="${AKG_CMAKE_ARGS} -DENABLE_D=ON"
287        graph_kernel_cfg="-DAKG_ENABLE_D=ON ${graph_kernel_cfg}"
288    fi
289    echo "cmake ${AKG_CMAKE_ARGS}"
290    cmake -S ${AKG_DIR} ${AKG_CMAKE_ARGS} -B .
291    cmake --build . -j$THREAD_NUM
292    cmake --install .
293    cd ${BUILD_DIR}/akg
294    [ -d dist ] && rm -rf dist
295    python3 ${BUILD_DIR}/akg/akg_setup.py bdist_wheel
296    cd dist
297    for file in *.whl; do
298        file_name=$(basename $file)
299        prefix=$(echo $file_name | cut -d '-' -f 1-2)
300        PY_TAGS=`get_python_tag`
301        akg_pkg_name="${prefix}-${PY_TAGS}-linux_$1.whl"
302        mv $file ${akg_pkg_name}
303        sha256sum -b "$akg_pkg_name" >"$akg_pkg_name.sha256"
304        akg_package_path=dist/${akg_pkg_name}
305    done
306    echo "---------------- AKG: build end ----------------"
307    cd ${BUILD_DIR}
308  else
309    echo -e "\e[31mPython3 not found, so AKG will not be compiled. \e[0m"
310  fi
311}
312
313build_python_wheel_package() {
314  local python_version=`python3 -V 2>&1 | awk '{print $2}' | awk -F '.' '{print $1}'` || true
315  if [[ "${python_version}" == "3" ]]; then
316    cd ${BASEPATH}/mindspore/lite/build/
317    local lite_wrapper_so=`ls python/_c_lite_wrapper*.so` || true
318    if [ ! -f "${lite_wrapper_so}" ]; then
319      echo "error: can not find python so."
320      return 0
321    fi
322    mkdir -pv package/mindspore_lite/lib/
323    cp ../python/api/* package/mindspore_lite/
324    local pkg_name=mindspore-lite-${VERSION_STR}-linux-$1
325    if [[ "$1" == "x86_64" ]]; then
326      local pkg_name=mindspore-lite-${VERSION_STR}-linux-x64
327    fi
328    if [[ ("${MSLITE_ENABLE_CLOUD_FUSION_INFERENCE}" == "on") || ("${MSLITE_ENABLE_CLOUD_INFERENCE}" == "on") ]]; then
329      cp src/extendrt/*.so package/mindspore_lite/lib/
330      find src/extendrt/delegate/graph_executor/litert/ -name "*.so" -exec cp '{}' package/mindspore_lite/lib/ \;
331      find src/extendrt/unified_executor/ -name "*.so" -exec cp '{}' package/mindspore_lite/lib/ \;
332      find src/extendrt/convert/ -name "*.so" -exec cp '{}' package/mindspore_lite/lib/ \;
333      if [[ "X${MSLITE_ENABLE_ACL}" == "Xon" ]]; then
334        cp src/extendrt/kernel/ascend/*.so package/mindspore_lite/lib/
335        local dvpp_utils=minddata/kernels-dvpp-image/utils/libdvpp_utils.so
336        if [ -f ${dvpp_utils} ]; then
337          cp ${dvpp_utils} package/mindspore_lite/lib/
338        fi
339      fi
340      if [ -f "${INSTALL_PREFIX}/${pkg_name}/runtime/lib/libtransformer-shared.so" ]; then
341        cp ${INSTALL_PREFIX}/${pkg_name}/runtime/lib/libtransformer-shared.so package/mindspore_lite/lib/
342      fi
343      if [ -f "${INSTALL_PREFIX}/${pkg_name}/runtime/lib/libtensorrt_plugin.so" ]; then
344        cp ${INSTALL_PREFIX}/${pkg_name}/runtime/lib/libtensorrt_plugin.so package/mindspore_lite/lib/
345      fi
346      if [ -f "${INSTALL_PREFIX}/${pkg_name}/runtime/lib/libascend_ge_plugin.so" ]; then
347        cp ${INSTALL_PREFIX}/${pkg_name}/runtime/lib/libascend_ge_plugin.so package/mindspore_lite/lib/
348      fi
349      if [ -f "${INSTALL_PREFIX}/${pkg_name}/runtime/lib/libllm_engine_plugin.so" ]; then
350        cp ${INSTALL_PREFIX}/${pkg_name}/runtime/lib/libllm_engine_plugin.so package/mindspore_lite/lib/
351      fi
352    else
353      if [[ "X${MSLITE_ENABLE_ACL}" == "Xon" ]]; then
354        cp src/litert/kernel/ascend/*.so package/mindspore_lite/lib/
355      fi
356      cp src/*.so package/mindspore_lite/lib/
357    fi
358    if [ -d "${INSTALL_PREFIX}/${pkg_name}/runtime/third_party/glog" ]; then
359      cp ${INSTALL_PREFIX}/${pkg_name}/runtime/third_party/glog/*.so* package/mindspore_lite/lib/
360    fi
361    if [ -d "${INSTALL_PREFIX}/${pkg_name}/runtime/third_party/dnnl" ]; then
362      cp ${INSTALL_PREFIX}/${pkg_name}/runtime/third_party/dnnl/*.so* package/mindspore_lite/lib/
363    fi
364    if [ -d "${CPACK_PACKAGE_DIR}/${pkg_name}/tools/custom_kernels" ]; then
365      cp -rf ${CPACK_PACKAGE_DIR}/${pkg_name}/tools/custom_kernels package/mindspore_lite/
366    fi
367    if [ -d "${INSTALL_PREFIX}/${pkg_name}/tools/converter/lib" ]; then
368      cp ${INSTALL_PREFIX}/${pkg_name}/tools/converter/lib/*.so* package/mindspore_lite/lib/
369    fi
370    cp python/*.so package/mindspore_lite/lib/
371    mkdir -pv package/mindspore_lite/include/registry/
372    if [ -d "${INSTALL_PREFIX}/${pkg_name}/runtime/include/api" ]; then
373      cp -rf ${INSTALL_PREFIX}/${pkg_name}/runtime/include/api package/mindspore_lite/include/
374    fi
375    if [ -d "${INSTALL_PREFIX}/${pkg_name}/runtime/include/mindapi" ]; then
376      cp -rf ${INSTALL_PREFIX}/${pkg_name}/runtime/include/mindapi package/mindspore_lite/include/
377    fi
378    if [ -f "${INSTALL_PREFIX}/${pkg_name}/tools/converter/include/registry/converter_context.h" ]; then
379      cp ${INSTALL_PREFIX}/${pkg_name}/tools/converter/include/registry/converter_context.h package/mindspore_lite/include/registry/
380    fi
381    if [ -f "${INSTALL_PREFIX}/${pkg_name}/tools/converter/include/converter.h" ]; then
382      cp ${INSTALL_PREFIX}/${pkg_name}/tools/converter/include/converter.h package/mindspore_lite/include/
383    fi
384    cp .commit_id package/mindspore_lite/
385    echo "__version__ = '${VERSION_STR}'" > package/mindspore_lite/version.py
386    cp ../python/setup.py  package/
387    cd package
388    rm -rf dist/mindspore_lite-*.whl
389    python3 setup.py bdist_wheel ${BASEPATH}
390    py_tags=`get_python_tag`
391    local whl_name=mindspore_lite-${VERSION_STR}-${py_tags}-linux_$1.whl
392    cp dist/mindspore_lite-*.whl ${BASEPATH}/output/${whl_name}
393    cd ${BASEPATH}/output/
394    sha256sum ${whl_name} > ${whl_name}.sha256
395  else
396    echo -e "\e[31mPython3 not found, so Python API will not be compiled. \e[0m"
397  fi
398}
399
400build_lite() {
401    LITE_CMAKE_ARGS=${CMAKE_ARGS}
402    [ -n "${BASEPATH}" ] && rm -rf ${BASEPATH}/output
403    echo "============ Start building MindSpore Lite ${VERSION_STR} ============"
404    local local_lite_platform=${LITE_PLATFORM}
405    if [[ "${LITE_ENABLE_AAR}" == "on" ]]; then
406        local_lite_platform=$1
407        mkdir -pv ${BASEPATH}/mindspore/lite/build/java
408        cd ${BASEPATH}/mindspore/lite/build/
409        [ -n "${BASEPATH}" ] && find . -maxdepth 1 | grep -v java | grep '/' | xargs -I {} rm -rf {}
410    else
411        if [[ "${INC_BUILD}" == "off" ]]; then
412            [ -n "${BASEPATH}" ] && rm -rf ${BASEPATH}/mindspore/lite/build
413        fi
414        mkdir -pv ${BASEPATH}/mindspore/lite/build
415    fi
416    cd ${BASEPATH}/mindspore/lite/build
417    write_commit_file
418
419    LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DENABLE_ASAN=${ENABLE_ASAN} -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX}"
420
421    if [[ "$(uname)" == "Darwin" && "${local_lite_platform}" != "x86_64" ]]; then
422      LITE_CMAKE_ARGS=`echo $LITE_CMAKE_ARGS | sed 's/-DCMAKE_BUILD_TYPE=Debug/-DCMAKE_BUILD_TYPE=Release/g'`
423      LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_ENABLE_TRAIN=off -DMSLITE_GPU_BACKEND=off -DMSLITE_ENABLE_NPU=off"
424      LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_MINDDATA_IMPLEMENT=off"
425      LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DENABLE_BITCODE=0 -G Xcode"
426      CMAKE_TOOLCHAIN_FILE=${BASEPATH}/cmake/lite_ios.cmake
427    fi
428
429    BRANCH_NAME=nnie_3516_r2.3_dev1
430    if [[ ("${MSLITE_REGISTRY_DEVICE}" == "Hi3516D" || "${TOOLCHAIN_NAME}" == "himix200") && "${local_lite_platform}" == "arm32" ]]; then
431      TOOLCHAIN_NAME="himix200"
432      MSLITE_REGISTRY_DEVICE=Hi3516D
433      check_Hi35xx
434      MSLITE_COMPILE_TWICE=ON
435      twice_target='benchmark micro_nnie'
436    elif [[ "${MSLITE_REGISTRY_DEVICE}" == "Hi3559A" && "${local_lite_platform}" == "arm64" ]]; then
437      TOOLCHAIN_NAME="himix100"
438      check_Hi35xx
439      MSLITE_COMPILE_TWICE=ON
440      twice_target='benchmark micro_nnie'
441    elif [[ "${MSLITE_REGISTRY_DEVICE}" == "SD3403" && "${local_lite_platform}" == "arm64" ]]; then
442      TOOLCHAIN_NAME="mix210"
443      MSLITE_COMPILE_TWICE=ON
444      twice_target=benchmark
445    elif [[ "${MSLITE_REGISTRY_DEVICE}" == "Hi3519A" && "${local_lite_platform}" == "arm32" ]]; then
446      TOOLCHAIN_NAME="himix200"
447      check_Hi35xx
448      MSLITE_COMPILE_TWICE=ON
449      twice_target='benchmark micro_nnie'
450    elif [[ ("${MSLITE_ENABLE_NNIE}" == "on" || "${MSLITE_REGISTRY_DEVICE}" == "Hi3516D") && "${local_lite_platform}" == "x86_64" ]]; then
451      MSLITE_REGISTRY_DEVICE=Hi3516D
452    elif [[ "${MSLITE_MICRO_PLATFORM}" == cortex-m* && "${local_lite_platform}" == "x86_64" ]]; then
453      TOOLCHAIN_NAME=${MSLITE_MICRO_PLATFORM}
454    fi
455
456    machine=`uname -m`
457    echo "machine:${machine}."
458    if [[ "${local_lite_platform}" == "arm32" ]]; then
459      LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DPLATFORM_ARM32=on -DENABLE_NEON=on"
460      if [ "$(uname)" == "Darwin" ]; then
461        # CPU : iOS-aarch32
462        pkg_name=mindspore-lite-${VERSION_STR}-ios-aarch32
463        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DARCHS=armv7;armv7s"
464        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_MINDDATA_IMPLEMENT=off"
465      elif [[ "${TOOLCHAIN_NAME}" == "ohos-lite" ]]; then
466        # Hi3516D : OpenHarmony-aarch32
467        CMAKE_TOOLCHAIN_FILE=${BASEPATH}/mindspore/lite/cmake/ohos-lite.toolchain.cmake
468        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DTOOLCHAIN_NAME=ohos-lite"
469        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_MINDDATA_IMPLEMENT=off"
470        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_ENABLE_FP16=off"
471      elif [[ "${TOOLCHAIN_NAME}" == "himix200" ]]; then
472        # Hi3516D : Linux-aarch32
473        CMAKE_TOOLCHAIN_FILE=${BASEPATH}/mindspore/lite/cmake/himix200.toolchain.cmake
474        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DTOOLCHAIN_NAME=himix200"
475        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_MINDDATA_IMPLEMENT=off"
476        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_ENABLE_FP16=off -DMSLITE_ENABLE_TRAIN=off -DMSLITE_GPU_BACKEND=off"
477      elif [[ "${TOOLCHAIN_NAME}" == "ohos" ]]; then
478        pkg_name=mindspore-lite-${VERSION_STR}-ohos-arm32
479        CMAKE_TOOLCHAIN_FILE=${OHOS_NDK}/build/cmake/ohos.toolchain.cmake
480        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DCMAKE_OHOS_NDK=${OHOS_NDK} -DOHOS_ARCH=armeabi-v7a -DOHOS_STL=c++_static -DTOOLCHAIN_NAME=${TOOLCHAIN_NAME}"
481        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_MINDDATA_IMPLEMENT=off"
482        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_ENABLE_FP16=off -DMSLITE_ENABLE_TRAIN=off -DMSLITE_GPU_BACKEND=off"
483      else
484        # CPU : Android-aarch32
485        checkndk
486        if [ -n "${MS_CCACHE_PATH}" ]; then
487          echo "use ${MS_CCACHE_PATH} to speed up compilation."
488          LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DANDROID_CCACHE=${MS_CCACHE_PATH}"
489        fi
490        export PATH=${ANDROID_NDK}/toolchains/llvm/prebuilt/linux-x86_64/bin:${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin:${PATH}
491        CMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake
492        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_MINDDATA_IMPLEMENT=full"
493        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_ENABLE_FP16=on"
494        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DANDROID_NATIVE_API_LEVEL=19 -DANDROID_NDK=${ANDROID_NDK} -DANDROID_ABI=armeabi-v7a -DANDROID_TOOLCHAIN_NAME=clang -DANDROID_STL=${MSLITE_ANDROID_STL}"
495      fi
496    elif [[ "${local_lite_platform}" == "arm64" ]]; then
497      LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DPLATFORM_ARM64=on -DENABLE_NEON=on"
498      if [ "$(uname)" == "Darwin" ]; then
499        # CPU : iOS-aarch64
500        pkg_name=mindspore-lite-${VERSION_STR}-ios-aarch64
501        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DARCHS=arm64"
502        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_ENABLE_FP16=on"
503        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_MINDDATA_IMPLEMENT=off"
504      elif [[ "${TOOLCHAIN_NAME}" == "himix100" ]]; then
505        # Hi3559A :
506        CMAKE_TOOLCHAIN_FILE=${BASEPATH}/mindspore/lite/cmake/himix100.toolchain.cmake
507        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DTOOLCHAIN_NAME=himix100"
508        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_MINDDATA_IMPLEMENT=off"
509        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_ENABLE_FP16=off -DMSLITE_ENABLE_TRAIN=off -DMSLITE_GPU_BACKEND=off"
510      elif [[ "${TOOLCHAIN_NAME}" == "mix210" ]]; then
511        # SD3403 :
512        CMAKE_TOOLCHAIN_FILE=${BASEPATH}/mindspore/lite/cmake/mix210.toolchain.cmake
513        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DTOOLCHAIN_NAME=mix210"
514        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_MINDDATA_IMPLEMENT=off"
515        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_ENABLE_FP16=on -DMSLITE_ENABLE_TRAIN=off -DMSLITE_GPU_BACKEND=off"
516      elif [[ "${TOOLCHAIN_NAME}" == "ohos" ]]; then
517        pkg_name=mindspore-lite-${VERSION_STR}-ohos-aarch64
518        CMAKE_TOOLCHAIN_FILE=${OHOS_NDK}/build/cmake/ohos.toolchain.cmake
519        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DCMAKE_OHOS_NDK=${OHOS_NDK} -DOHOS_ARCH=arm64-v8a -DOHOS_STL=c++_static -DTOOLCHAIN_NAME=${TOOLCHAIN_NAME}"
520        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_MINDDATA_IMPLEMENT=off"
521        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_ENABLE_FP16=on -DMSLITE_ENABLE_TRAIN=off -DMSLITE_GPU_BACKEND=off"
522      elif [[ "${AOS_SDK}" ]]; then
523        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_MINDDATA_IMPLEMENT=full"
524        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DTARGET_AOS_ARM=on"
525        if [[ "${TOOLCHAIN_NAME}" == "gcc" ]]; then
526          LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DTOOLCHAIN_NAME=gcc"
527          LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_ENABLE_FP16=off"
528        fi
529      else
530        if [[ "${machine}" == "aarch64" ]]; then
531          # CPU : Linux-aarch64
532          LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMACHINE_LINUX_ARM64=on"
533          LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_ENABLE_TRAIN=off"
534          LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_GPU_BACKEND=off"
535        else
536          # CPU/GPU : Android-aarch64
537          checkndk
538          if [ -n "${MS_CCACHE_PATH}" ]; then
539            echo "use ${MS_CCACHE_PATH} to speed up compilation."
540            LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DANDROID_CCACHE=${MS_CCACHE_PATH}"
541          fi
542          export PATH=${ANDROID_NDK}/toolchains/llvm/prebuilt/linux-x86_64/bin:${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin:${PATH}
543          CMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake
544          LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DANDROID_NATIVE_API_LEVEL=19 -DANDROID_NDK=${ANDROID_NDK} -DANDROID_ABI=arm64-v8a -DANDROID_TOOLCHAIN_NAME=aarch64-linux-android-clang -DANDROID_STL=${MSLITE_ANDROID_STL}"
545          LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_MINDDATA_IMPLEMENT=full"
546        fi
547        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_ENABLE_FP16=on"
548      fi
549    elif [[ "$(uname)" == "Darwin" ]]; then
550       pkg_name=mindspore-lite-${VERSION_STR}-ios-simulator
551       CMAKE_TOOLCHAIN_FILE=${BASEPATH}/cmake/lite_ios.cmake
552       LITE_CMAKE_ARGS=`echo $LITE_CMAKE_ARGS | sed 's/-DCMAKE_BUILD_TYPE=Debug/-DCMAKE_BUILD_TYPE=Release/g'`
553       LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DPLATFORM=SIMULATOR64 -DPLATFORM_ARM64=off -DENABLE_NEON=off -DMSLITE_ENABLE_TRAIN=off -DMSLITE_GPU_BACKEND=off -DMSLITE_ENABLE_NPU=off"
554       LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_MINDDATA_IMPLEMENT=off"
555       LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_ENABLE_TOOLS=off -DMSLITE_ENABLE_CONVERTER=off"
556       LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -G Xcode .."
557    else
558      if [[ "${machine}" == "aarch64" ]]; then
559        echo "Use the '-I arm64' command when compiling MindSpore Lite on an aarch64 architecture system."
560        exit 1
561      fi
562      if [[ "${TOOLCHAIN_NAME}" == cortex-m* ]]; then
563        CMAKE_TOOLCHAIN_FILE=${BASEPATH}/mindspore/lite/cmake/${TOOLCHAIN_NAME}.toolchain.cmake
564        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DTOOLCHAIN_NAME=${TOOLCHAIN_NAME}"
565        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DPLATFORM_MCU=on"
566        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_MINDDATA_IMPLEMENT=off -DMSLITE_ENABLE_TRAIN=off -DMSLITE_GPU_BACKEND=off -DMSLITE_ENABLE_TOOLS=off"
567      else
568        # CPU : Linux-x86_64
569        LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DPLATFORM_X86_64=on"
570      fi
571    fi
572
573    if [[ "X$CMAKE_TOOLCHAIN_FILE" != "X" ]]; then
574      LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}"
575    fi
576    if [[ "X$MSLITE_REGISTRY_DEVICE" != "X" ]]; then
577      LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_REGISTRY_DEVICE=${MSLITE_REGISTRY_DEVICE}"
578    fi
579    if [[ "X$MSLITE_COMPILE_TWICE" != "X" ]]; then
580      LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} -DMSLITE_COMPILE_TWICE=${MSLITE_COMPILE_TWICE}"
581    fi
582    if [[ ("${local_lite_platform}" == "arm64" || "${local_lite_platform}" == "arm32") && "${TOOLCHAIN_NAME}" != "ohos" ]]; then
583      echo "default link libc++_static.a, export MSLITE_ANDROID_STL=c++_shared to link libc++_shared.so"
584    fi
585    if [[ ("X${MSLITE_ENABLE_CLOUD_FUSION_INFERENCE}" != "Xon") && ("X${MSLITE_ENABLE_CLOUD_INFERENCE}" != "Xon") ]]; then
586      ENABLE_AKG="off"
587    fi
588    if [[ ( ("${local_lite_platform}" == "x86_64" && "${machine}" == "x86_64") || ("${local_lite_platform}" == "arm64" && ${machine} == "aarch64") ) && ("${ENABLE_AKG}" == "on") ]]; then
589      akg_package_path=""
590      graph_kernel_cfg=""
591      build_akg ${machine}
592      LITE_CMAKE_ARGS="${LITE_CMAKE_ARGS} ${graph_kernel_cfg} -DAKG_PKG_PATH=${akg_package_path}"
593    fi
594    echo "cmake ${LITE_CMAKE_ARGS} ${BASEPATH}/mindspore/lite"
595    cmake ${LITE_CMAKE_ARGS} "${BASEPATH}/mindspore/lite"
596
597    if [[ "$(uname)" == "Darwin" && "${local_lite_platform}" != "x86_64" ]]; then
598        xcodebuild ONLY_ACTIVE_ARCH=NO -configuration Release -scheme mindspore-lite_static -target mindspore-lite_static -sdk iphoneos -quiet -UseModernBuildSystem=YES
599    elif [[ "$(uname)" == "Darwin" && "${local_lite_platform}" == "x86_64" ]]; then
600        xcodebuild ONLY_ACTIVE_ARCH=NO -configuration Release -scheme mindspore-lite_static -target mindspore-lite_static -sdk iphonesimulator -quiet -UseModernBuildSystem=YES
601    else
602      make -j$THREAD_NUM && make install
603      if [[ "X$MSLITE_COMPILE_TWICE" == "XON" ]]; then
604        if [[ "X$MSLITE_ENABLE_TOOLS" != "X" ]]; then
605          MSLITE_ENABLE_TOOLS=$(echo $MSLITE_ENABLE_TOOLS | tr '[a-z]' '[A-Z]')
606        fi
607        if [[ "X$MSLITE_ENABLE_TOOLS" != "XOFF" ]]; then
608          LITE_CMAKE_ARGS=`echo $LITE_CMAKE_ARGS | sed 's/-DMSLITE_COMPILE_TWICE=ON/-DMSLITE_COMPILE_TWICE=OFF/g'`
609          cp -r ${INSTALL_PREFIX}/mindspore*/runtime ${BASEPATH}/mindspore/lite/providers
610          PKG_PATH=${INSTALL_PREFIX}/`ls ${INSTALL_PREFIX}/`
611          echo "cmake ${LITE_CMAKE_ARGS} -DPKG_PATH=${PKG_PATH} ${BASEPATH}/mindspore/lite"
612          cmake ${LITE_CMAKE_ARGS} -DPKG_PATH=${PKG_PATH} "${BASEPATH}/mindspore/lite"
613          cmake --build "${BASEPATH}/mindspore/lite/build" --target ${twice_target} -j$THREAD_NUM
614          make install
615        fi
616      fi
617
618      make package
619      get_cpack_dir
620
621      local package_wheel=${MSLITE_ENABLE_PACKAGE_WHEEL}
622      if [[ ("${MSLITE_ENABLE_CLOUD_FUSION_INFERENCE}" == "on") || ("${MSLITE_ENABLE_CLOUD_INFERENCE}" == "on") || ("${MSLITE_ENABLE_SERVER_INFERENCE}" == "on") ]] && [[ ${MSLITE_ENABLE_PACKAGE_WHEEL} == "" ]]; then
623        package_wheel=on
624      fi
625      if [[ "${local_lite_platform}" == "x86_64" && "X$CMAKE_TOOLCHAIN_FILE" == "X" ]]; then
626        if [[ "${package_wheel}" == "on" ]]; then
627          build_python_wheel_package "x86_64"
628        fi
629        if [ "${JAVA_HOME}" ]; then
630          echo -e "\e[31mJAVA_HOME=$JAVA_HOME  \e[0m"
631          build_lite_jni_and_jar "${CMAKE_ARGS}" "x86_64"
632        else
633            echo -e "\e[31mJAVA_HOME is not set, so jni and jar packages will not be compiled \e[0m"
634            echo -e "\e[31mIf you want to compile the JAR package, please set $JAVA_HOME. For example: export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64 \e[0m"
635        fi
636      elif [[ "${local_lite_platform}" == "arm64" ]] && [[ "${machine}" == "aarch64" ]]; then
637        if [[ "${package_wheel}" == "on" ]]; then
638          build_python_wheel_package "aarch64"
639        fi
640        if [ "${JAVA_HOME}" ]; then
641          echo -e "\e[31mJAVA_HOME=$JAVA_HOME  \e[0m"
642          build_lite_jni_and_jar "${CMAKE_ARGS}" "aarch64"
643        else
644            echo -e "\e[31mJAVA_HOME is not set, so jni and jar packages will not be compiled \e[0m"
645            echo -e "\e[31mIf you want to compile the JAR package, please set $JAVA_HOME. For example: export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64 \e[0m"
646        fi
647      fi
648    fi
649    if [[ $? -ne 0 ]]; then
650        echo "---------------- mindspore lite: build failed ----------------"
651        exit 1
652    else
653        if [ "$(uname)" == "Darwin" ]; then
654          mkdir -p ${BASEPATH}/output
655          cp -r ${BASEPATH}/mindspore/lite/build/src/Release-*/mindspore-lite.framework ${BASEPATH}/output/mindspore-lite.framework
656          # schema files are copied in shell script since they will not generated until xcodebuild is executed.
657          local schema_path=${BASEPATH}/output/mindspore-lite.framework/Headers/include/schema
658          mkdir -p ${schema_path}
659          cp ${BASEPATH}/mindspore/lite/build/schema/model_generated.h ${schema_path}
660          cp ${BASEPATH}/mindspore/lite/build/schema/ops_generated.h ${schema_path}
661          cp ${BASEPATH}/mindspore/lite/build/schema/ops_types_generated.h ${schema_path}
662          if [[ "${MSLITE_ENABLE_COREML}" == "ON" || "${MSLITE_ENABLE_COREML}" == "on" ]]; then
663            local protobuf_arm_lib=${BASEPATH}/mindspore/lite/build/_deps/protobuf_arm-src/_build/libprotobuf-lite.a
664            if [ ! -e "$protobuf_arm_lib" ]; then
665              local protobuf_arm_libpath=$(grep protobuf_arm_LIBPATH ${BASEPATH}/mindspore/lite/build/CMakeCache.txt | cut -d'=' -f2)
666              protobuf_arm_lib="${protobuf_arm_libpath}/libprotobuf-lite.a"
667            fi
668            if [ ! -e "$protobuf_arm_lib" ]; then
669              echo "failed to find libprotobuf-lite.a to build ios package"
670              exit 1
671            fi
672            mkdir -p ${BASEPATH}/output/mindspore-lite.framework/third_party/protobuf
673            cp $protobuf_arm_lib ${BASEPATH}/output/mindspore-lite.framework/third_party/protobuf/
674          fi
675          cd ${BASEPATH}/output
676          tar -zcvf ${pkg_name}.tar.gz mindspore-lite.framework/
677          sha256sum ${pkg_name}.tar.gz > ${pkg_name}.tar.gz.sha256
678          rm -r mindspore-lite.framework
679        else
680          mv ${INSTALL_PREFIX}/*.tar.gz* ${BASEPATH}/output/
681        fi
682
683        if [[ "${local_lite_platform}" == "x86_64" ]]; then
684          if [[ "${MSLITE_ENABLE_TESTCASES}" == "ON" || "${MSLITE_ENABLE_TESTCASES}" == "on" ]]; then
685            mkdir -pv ${BASEPATH}/mindspore/lite/test/do_test || true
686            if [[ ! "${MSLITE_ENABLE_CONVERTER}" || "${MSLITE_ENABLE_CONVERTER}" == "ON" || "${MSLITE_ENABLE_CONVERTER}" == "on" ]]; then
687              cp ${INSTALL_PREFIX}/mindspore-lite*/tools/converter/lib/*.so* ${BASEPATH}/mindspore/lite/test/do_test || true
688            fi
689            cp ${INSTALL_PREFIX}/mindspore-lite*/runtime/lib/*.so* ${BASEPATH}/mindspore/lite/test/do_test || true
690            if [ -d "${INSTALL_PREFIX}/mindspore-lite*/runtime/third_party/glog" ]; then
691              cp ${INSTALL_PREFIX}/mindspore-lite*/runtime/third_party/glog/*.so* ${BASEPATH}/mindspore/lite/test/do_test || true
692            fi
693            if [[ ! "${MSLITE_ENABLE_TRAIN}" || "${MSLITE_ENABLE_TRAIN}" == "ON" || "${MSLITE_ENABLE_TRAIN}" == "on" ]]; then
694              cp ${INSTALL_PREFIX}/mindspore-lite*/runtime/third_party/libjpeg-turbo/lib/*.so* ${BASEPATH}/mindspore/lite/test/do_test || true
695            fi
696          fi
697        fi
698
699        rm -rf ${INSTALL_PREFIX:?}/
700        if [[ "X$MSLITE_REGISTRY_DEVICE" != "X" ]] && [[ "${MSLITE_REGISTRY_DEVICE}" != "SD3403" ]]; then
701          local compile_nnie_script=${BASEPATH}/mindspore/lite/tools/providers/NNIE/Hi3516D/compile_nnie.sh
702          cd ${BASEPATH}/../
703          if [[ "${local_lite_platform}" == "x86_64" ]]; then
704            bash ${compile_nnie_script} -I ${local_lite_platform} -b ${BRANCH_NAME} -j $THREAD_NUM
705          fi
706          if [[ $? -ne 0 ]]; then
707            echo "compile ${local_lite_platform} for nnie failed."
708            exit 1
709          fi
710        fi
711        echo "---------------- mindspore lite: build success ----------------"
712    fi
713}
714
715build_lite_arm64_and_jni() {
716    local ARM64_CMAKE_ARGS=${CMAKE_ARGS}
717    build_lite "arm64"
718    # copy arm64 so
719    local is_train=on
720    local pkg_name=mindspore-lite-${VERSION_STR}-android-aarch64
721    cd "${BASEPATH}/mindspore/lite/build"
722
723    rm -rf ${pkg_name}
724    tar -zxf ${BASEPATH}/output/${pkg_name}.tar.gz
725    rm -rf ${LITE_JAVA_PATH}/java/app/libs/arm64-v8a/ && mkdir -p ${LITE_JAVA_PATH}/java/app/libs/arm64-v8a/
726    rm -rf ${LITE_JAVA_PATH}/native/libs/arm64-v8a/   && mkdir -p ${LITE_JAVA_PATH}/native/libs/arm64-v8a/
727    cp ./${pkg_name}/runtime/lib/libmindspore-lite.so ${LITE_JAVA_PATH}/java/app/libs/arm64-v8a/
728    cp ./${pkg_name}/runtime/lib/libmindspore-lite.so ${LITE_JAVA_PATH}/native/libs/arm64-v8a/
729    local train_so=$pkg_name/runtime/lib/libmindspore-lite-train.so
730    if [ ! -f "$train_so" ]; then
731        echo "not exist"
732        is_train=off
733    fi
734    if [[ "X$is_train" = "Xon" ]]; then
735        cp ./${pkg_name}/runtime/lib/libmindspore-lite*so* ${LITE_JAVA_PATH}/java/app/libs/arm64-v8a/
736        cp ./${pkg_name}/runtime/lib/libmindspore-lite*so* ${LITE_JAVA_PATH}/native/libs/arm64-v8a/
737    fi
738    local minddata_so=${pkg_name}/runtime/lib/libminddata-lite.so
739    if [ -e "${minddata_so}" ]; then
740       cp ./${pkg_name}/runtime/lib/libminddata-lite.so  ${LITE_JAVA_PATH}/java/app/libs/arm64-v8a/
741       cp ./${pkg_name}/runtime/lib/libminddata-lite.so  ${LITE_JAVA_PATH}/native/libs/arm64-v8a/
742    fi
743    local jpeg_turbo_dir=${pkg_name}/runtime/third_party/libjpeg-turbo/lib
744    if [ -e "$jpeg_turbo_dir" ]; then
745       cp ./${pkg_name}/runtime/third_party/libjpeg-turbo/lib/*.so* ${LITE_JAVA_PATH}/java/app/libs/arm64-v8a/
746       cp ./${pkg_name}/runtime/third_party/libjpeg-turbo/lib/*.so* ${LITE_JAVA_PATH}/native/libs/arm64-v8a/
747    fi
748    local npu_so=${pkg_name}/runtime/third_party/hiai_ddk/lib/libhiai.so
749    if [ -e "${npu_so}" ]; then
750      cp ./${pkg_name}/runtime/third_party/hiai_ddk/lib/*.so* ${LITE_JAVA_PATH}/java/app/libs/arm64-v8a/
751      cp ./${pkg_name}/runtime/third_party/hiai_ddk/lib/*.so* ${LITE_JAVA_PATH}/native/libs/arm64-v8a/
752    fi
753    # build jni so
754    [ -n "${BASEPATH}" ] && rm -rf java/jni && mkdir -pv java/jni
755    cd java/jni
756    if [ -n "${MS_CCACHE_PATH}" ]; then
757      echo "use ${MS_CCACHE_PATH} to speed up compilation."
758      ARM64_CMAKE_ARGS="$ARM64_CMAKE_ARGS -DANDROID_CCACHE=${MS_CCACHE_PATH}"
759    fi
760    cmake ${ARM64_CMAKE_ARGS} -DSUPPORT_TRAIN=${is_train} -DPLATFORM_ARM64=on  \
761          -DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK}/build/cmake/android.toolchain.cmake" -DANDROID_NATIVE_API_LEVEL="19"      \
762          -DANDROID_NDK="${ANDROID_NDK}" -DANDROID_ABI="arm64-v8a" -DANDROID_TOOLCHAIN_NAME="aarch64-linux-android-clang"  \
763          -DANDROID_STL=${MSLITE_ANDROID_STL} "${LITE_JAVA_PATH}/native/"
764    make -j$THREAD_NUM
765    if [[ $? -ne 0 ]]; then
766        echo "---------------- mindspore lite: build jni arm64 failed----------------"
767        exit 1
768    fi
769    cp ./libmindspore-lite-jni.so ${LITE_JAVA_PATH}/java/app/libs/arm64-v8a/
770    cp ./libmindspore-lite-jni.so ${LITE_JAVA_PATH}/native/libs/arm64-v8a/
771    if [[ "X$is_train" = "Xon" ]]; then
772      cp ./libmindspore-lite-train-jni.so ${LITE_JAVA_PATH}/java/app/libs/arm64-v8a/
773      cp ./libmindspore-lite-train-jni.so ${LITE_JAVA_PATH}/native/libs/arm64-v8a/
774    fi
775}
776
777build_lite_arm32_and_jni() {
778    local ARM32_CMAKE_ARGS=${CMAKE_ARGS}
779    build_lite "arm32"
780    # copy arm32 so
781    local is_train=on
782    local pkg_name=mindspore-lite-${VERSION_STR}-android-aarch32
783    cd "${BASEPATH}/mindspore/lite/build"
784
785    rm -rf ${pkg_name}
786    tar -zxf ${BASEPATH}/output/${pkg_name}.tar.gz
787    rm -rf ${LITE_JAVA_PATH}/java/app/libs/armeabi-v7a/ && mkdir -pv ${LITE_JAVA_PATH}/java/app/libs/armeabi-v7a/
788    rm -rf ${LITE_JAVA_PATH}/native/libs/armeabi-v7a/   && mkdir -pv ${LITE_JAVA_PATH}/native/libs/armeabi-v7a/
789    cp ./${pkg_name}/runtime/lib/libmindspore-lite.so ${LITE_JAVA_PATH}/java/app/libs/armeabi-v7a/
790    cp ./${pkg_name}/runtime/lib/libmindspore-lite.so ${LITE_JAVA_PATH}/native/libs/armeabi-v7a/
791    local train_so=$pkg_name/runtime/lib/libmindspore-lite-train.so
792    if [ ! -f "$train_so" ]; then
793        echo "not exist"
794        is_train=off
795    fi
796    if [[ "X$is_train" = "Xon" ]]; then
797        cp ./${pkg_name}/runtime/lib/libmindspore-lite*so* ${LITE_JAVA_PATH}/java/app/libs/armeabi-v7a/
798        cp ./${pkg_name}/runtime/lib/libmindspore-lite*so* ${LITE_JAVA_PATH}/native/libs/armeabi-v7a/
799    fi
800    local minddata_so=${pkg_name}/runtime/lib/libminddata-lite.so
801    if [ -e "${minddata_so}" ]; then
802       cp ./${pkg_name}/runtime/lib/libminddata-lite.so  ${LITE_JAVA_PATH}/java/app/libs/armeabi-v7a/
803       cp ./${pkg_name}/runtime/lib/libminddata-lite.so  ${LITE_JAVA_PATH}/native/libs/armeabi-v7a/
804    fi
805    local jpeg_turbo_dir=${pkg_name}/runtime/third_party/libjpeg-turbo/lib
806    if [ -e "$jpeg_turbo_dir" ]; then
807       cp ./${pkg_name}/runtime/third_party/libjpeg-turbo/lib/*.so* ${LITE_JAVA_PATH}/java/app/libs/armeabi-v7a/
808       cp ./${pkg_name}/runtime/third_party/libjpeg-turbo/lib/*.so* ${LITE_JAVA_PATH}/native/libs/armeabi-v7a/
809    fi
810    local npu_so=$pkg_name/runtime/third_party/hiai_ddk/lib/libhiai.so
811    if [ -e "$npu_so" ]; then
812      cp ./${pkg_name}/runtime/third_party/hiai_ddk/lib/*.so* ${LITE_JAVA_PATH}/java/app/libs/armeabi-v7a/
813      cp ./${pkg_name}/runtime/third_party/hiai_ddk/lib/*.so* ${LITE_JAVA_PATH}/native/libs/armeabi-v7a/
814    fi
815    # build jni so
816    [ -n "${BASEPATH}" ] && rm -rf java/jni && mkdir -pv java/jni
817    cd java/jni
818    if [ -n "${MS_CCACHE_PATH}" ]; then
819      echo "use ${MS_CCACHE_PATH} to speed up compilation."
820      ARM32_CMAKE_ARGS="$ARM32_CMAKE_ARGS -DANDROID_CCACHE=${MS_CCACHE_PATH}"
821    fi
822    cmake ${ARM32_CMAKE_ARGS} -DSUPPORT_TRAIN=${is_train} -DPLATFORM_ARM32=on \
823          -DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK}/build/cmake/android.toolchain.cmake" -DANDROID_NATIVE_API_LEVEL="19"      \
824          -DANDROID_NDK="${ANDROID_NDK}" -DANDROID_ABI="armeabi-v7a" -DANDROID_TOOLCHAIN_NAME="aarch64-linux-android-clang"  \
825          -DANDROID_STL=${MSLITE_ANDROID_STL} "${LITE_JAVA_PATH}/native"
826    make -j$THREAD_NUM
827    if [[ $? -ne 0 ]]; then
828        echo "---------------- mindspore lite: build jni arm32 failed----------------"
829        exit 1
830    fi
831    cp ./libmindspore-lite-jni.so ${LITE_JAVA_PATH}/java/app/libs/armeabi-v7a/
832    cp ./libmindspore-lite-jni.so ${LITE_JAVA_PATH}/native/libs/armeabi-v7a/
833    if [[ "X$is_train" = "Xon" ]]; then
834      cp ./libmindspore-lite-train-jni.so ${LITE_JAVA_PATH}/java/app/libs/armeabi-v7a/
835      cp ./libmindspore-lite-train-jni.so ${LITE_JAVA_PATH}/native/libs/armeabi-v7a/
836    fi
837}
838
839build_aar() {
840    if [[ "X${INC_BUILD}" == "Xoff" ]]; then
841        [ -n "${BASEPATH}" ] && rm -rf ${BASEPATH}/mindspore/lite/build
842    fi
843    cd ${LITE_JAVA_PATH}/java
844    rm -rf gradle .gradle gradlew gradlew.bat
845    local gradle_version=""
846    gradle_version=`gradle --version | grep Gradle | awk '{print$2}'`
847    if [[ ${gradle_version} == '6.6.1' ]]; then
848      gradle_command=gradle
849    else
850      gradle wrapper --gradle-version 6.6.1 --distribution-type all
851      gradle_command=${LITE_JAVA_PATH}/java/gradlew
852    fi
853    # build new java api module
854    ${gradle_command} clean -p ${LITE_JAVA_PATH}/
855    ${gradle_command} build -p ${LITE_JAVA_PATH}/ -x test
856
857    # build aar
858    build_lite_arm64_and_jni
859    build_lite_arm32_and_jni
860
861    cp ${LITE_JAVA_PATH}/build/libs/mindspore-lite-java.jar ${LITE_JAVA_PATH}/java/app/libs
862    # build aar
863    ${gradle_command} clean -p ${LITE_JAVA_PATH}/java/app
864    ${gradle_command} assembleRelease  -p ${LITE_JAVA_PATH}/java/app
865
866    cd ${LITE_JAVA_PATH}/java/app/build
867    [ -n "${BASEPATH}" ] && rm -rf ${BASEPATH}/output/*.tar.gz*
868    local minddata_so=${LITE_JAVA_PATH}/java/app/libs/arm64-v8a/libminddata-lite.so
869    if [ -e "${minddata_so}" ]; then
870      cp ${LITE_JAVA_PATH}/java/app/build/outputs/aar/mindspore-lite.aar ${BASEPATH}/output/mindspore-lite-full-${VERSION_STR}.aar
871      cd ${BASEPATH}/output
872      sha256sum mindspore-lite-full-${VERSION_STR}.aar > mindspore-lite-full-${VERSION_STR}.aar.sha256
873    else
874      cp ${LITE_JAVA_PATH}/java/app/build/outputs/aar/mindspore-lite.aar ${BASEPATH}/output/mindspore-lite-${VERSION_STR}.aar
875      cd ${BASEPATH}/output
876      sha256sum mindspore-lite-${VERSION_STR}.aar > mindspore-lite-${VERSION_STR}.aar.sha256
877    fi
878}
879
880update_submodule()
881{
882  if [[ "${MSLITE_ENABLE_ACL}" == "on" ]] || [[ "${AOS_SDK}" ]]; then
883    git submodule update --init graphengine
884    cd "${BASEPATH}/graphengine"
885    git submodule update --init 910/metadef
886  fi
887  cd "${BASEPATH}"
888  if [[ ("X$ENABLE_AKG" == "Xon" && (("${MSLITE_ENABLE_CLOUD_FUSION_INFERENCE}" == "on") || ("${MSLITE_ENABLE_CLOUD_INFERENCE}" == "on"))) ]]; then
889    if [[ ("${MSLITE_ENABLE_ACL}" == "on") ]]; then
890      git submodule update --init akg
891    else
892      GIT_LFS_SKIP_SMUDGE=1 git submodule update --init akg
893    fi
894  fi
895}
896
897build_lite_x86_64_aarch64_jar()
898{
899  echo "build_lite_x86_64_aarch64_jar start."
900  if [[ ! -f ${SERVER_X86_64_PACKAGE_FILE} ]] || [[ ! -f ${SERVER_AARCH64_PACKAGE_FILE} ]]; then
901    echo "x86_64_package aarch64_package file not exist."
902    exit 1
903  fi
904
905  local x86_64_base_path=""
906  x86_64_base_path=${SERVER_X86_64_PACKAGE_FILE%/*}
907  local aarch64_base_path=""
908  aarch64_base_path=${SERVER_AARCH64_PACKAGE_FILE%/*}
909  echo "x86_64_base_path: "${x86_64_base_path}
910  echo "aarch64_base_path: "${aarch64_base_path}
911
912  local x86_64_package_name=""
913  local aarch64_package_name=""
914  x86_64_package_name=`basename ${SERVER_X86_64_PACKAGE_FILE} '.tar.gz'`
915  aarch64_package_name=`basename ${SERVER_AARCH64_PACKAGE_FILE} '.tar.gz'`
916  echo "x86_64_package_name: "${x86_64_package_name}
917  echo "aarch64_package_name: "${aarch64_package_name}
918
919  # unzip tar.gz, extract native libs(libmindspore-lite.so,libmindspore-lite-jni.so)
920  rm -rf ${x86_64_base_path}/tmp ${aarch64_base_path}/tmp
921  mkdir ${x86_64_base_path}/tmp ${aarch64_base_path}/tmp
922  tar -zxvf ${SERVER_X86_64_PACKAGE_FILE} -C ${x86_64_base_path}/tmp
923  tar -zxvf ${SERVER_AARCH64_PACKAGE_FILE} -C ${aarch64_base_path}/tmp
924
925  LITE_JAVA_PATH=${LITE_BASEPATH}/java
926  local LITE_JAVA_NATIVE_RESOURCE_PATH=${LITE_JAVA_PATH}/src/main/resources/com/mindspore/lite
927  rm -f ${LITE_JAVA_NATIVE_RESOURCE_PATH}/linux_x86_64/*.so*
928  rm -f ${LITE_JAVA_NATIVE_RESOURCE_PATH}/linux_aarch64/*.so*
929  cp ${x86_64_base_path}/tmp/${x86_64_package_name}/runtime/lib/libmindspore-lite.so ${LITE_JAVA_NATIVE_RESOURCE_PATH}/linux_x86_64/
930  cp ${x86_64_base_path}/tmp/${x86_64_package_name}/runtime/lib/libmindspore-lite-jni.so ${LITE_JAVA_NATIVE_RESOURCE_PATH}/linux_x86_64/
931  cp ${aarch64_base_path}/tmp/${aarch64_package_name}/runtime/lib/libmindspore-lite.so ${LITE_JAVA_NATIVE_RESOURCE_PATH}/linux_aarch64/
932  cp ${aarch64_base_path}/tmp/${aarch64_package_name}/runtime/lib/libmindspore-lite-jni.so ${LITE_JAVA_NATIVE_RESOURCE_PATH}/linux_aarch64/
933
934  if [ -f "${x86_64_base_path}/tmp/${x86_64_package_name}/runtime/third_party/glog/libmindspore_glog.so.0" ]; then
935    cp ${x86_64_base_path}/tmp/${x86_64_package_name}/runtime/third_party/glog/libmindspore_glog.so* ${LITE_JAVA_NATIVE_RESOURCE_PATH}/linux_x86_64/libmindspore_glog.so
936  fi
937
938  if [ -f "${aarch64_base_path}/tmp/${aarch64_package_name}/runtime/third_party/glog/libmindspore_glog.so.0" ]; then
939    cp ${aarch64_base_path}/tmp/${aarch64_package_name}/runtime/third_party/glog/libmindspore_glog.so* ${LITE_JAVA_NATIVE_RESOURCE_PATH}/linux_aarch64/libmindspore_glog.so
940  fi
941  # compile jar package
942  rm -rf ${LITE_JAVA_PATH}/build
943  # build jar
944  local gradle_version=""
945  gradle_version=`gradle --version | grep Gradle | awk '{print$2}'`
946  if [[ ${gradle_version} == '6.6.1' ]]; then
947    gradle_command=gradle
948  else
949    gradle wrapper --gradle-version 6.6.1 --distribution-type all
950    gradle_command=${LITE_JAVA_PATH}/java/gradlew
951  fi
952
953  ${gradle_command} clean -p ${LITE_JAVA_PATH}/
954  if [[ "${ENABLE_ASAN}" == "ON" || "${ENABLE_ASAN}" == "on" ]] ; then
955    ${gradle_command} releaseJar -p ${LITE_JAVA_PATH}/ -x test --info
956  else
957    if [[ "${MSLITE_ENABLE_TESTCASES}" == "ON" || "${MSLITE_ENABLE_TESTCASES}" == "on" ]] ; then
958        export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${LITE_JAVA_PATH}/native/libs/linux_x86/
959        ${gradle_command} releaseJar -p ${LITE_JAVA_PATH}/ --info
960    else
961         ${gradle_command} releaseJar -p ${LITE_JAVA_PATH}/ -x test --info
962    fi
963  fi
964  echo "compile jar success."
965
966  # update jar package, compress tar.gz, update tar.gz
967  cp ${LITE_JAVA_PATH}/build/lib/jar/mindspore-lite-java.jar ${x86_64_base_path}/tmp/${x86_64_package_name}/runtime/lib/ -f
968  cp ${LITE_JAVA_PATH}/build/lib/jar/mindspore-lite-java.jar ${aarch64_base_path}/tmp/${aarch64_package_name}/runtime/lib/ -f
969
970  cd ${x86_64_base_path}/tmp
971  tar -zcvf ${x86_64_package_name}.tar.gz ${x86_64_package_name}/
972  sha256sum ${x86_64_package_name}.tar.gz > ${x86_64_package_name}.tar.gz.sha256
973  rm -f ../${x86_64_package_name}.tar.gz ../${x86_64_package_name}.tar.gz.sha256
974  mv ${x86_64_package_name}.tar.gz ../
975  mv ${x86_64_package_name}.tar.gz.sha256 ../
976
977  cd ${aarch64_base_path}/tmp
978  tar -zcvf ${aarch64_package_name}.tar.gz ${aarch64_package_name}/
979  sha256sum ${aarch64_package_name}.tar.gz > ${aarch64_package_name}.tar.gz.sha256
980  rm -f ../${aarch64_package_name}.tar.gz ../${aarch64_package_name}.tar.gz.sha256
981  mv ${aarch64_package_name}.tar.gz ../
982  mv ${aarch64_package_name}.tar.gz.sha256 ../
983
984  cd ${LITE_BASEPATH}
985  rm -rf ${x86_64_base_path}/tmp
986  rm -rf ${aarch64_base_path}/tmp
987  java -version
988}
989
990LITE_BASEPATH=$(cd "$(dirname $0)"; pwd)
991echo "LITE_BASEPATH="${LITE_BASEPATH}
992if [[ -z "${BASEPATH}" ]]; then
993  BASEPATH=${LITE_BASEPATH}/../..
994fi
995
996INSTALL_PREFIX=${BASEPATH}/output/tmp
997LITE_JAVA_PATH=${BASEPATH}/mindspore/lite/java
998
999update_submodule
1000
1001CMAKE_ARGS="${CMAKE_ARGS} -DENABLE_VERBOSE=${ENABLE_VERBOSE}"
1002if [[ "${DEBUG_MODE}" == "on" ]]; then
1003    CMAKE_ARGS="${CMAKE_ARGS} -DCMAKE_BUILD_TYPE=Debug "
1004else
1005    CMAKE_ARGS="${CMAKE_ARGS} -DCMAKE_BUILD_TYPE=Release "
1006fi
1007
1008if [[ "X$ENABLE_FAST_HASH_TABLE" == "Xon" ]]; then
1009    CMAKE_ARGS="${CMAKE_ARGS} -DENABLE_FAST_HASH_TABLE=ON"
1010else
1011    CMAKE_ARGS="${CMAKE_ARGS} -DENABLE_FAST_HASH_TABLE=OFF"
1012fi
1013
1014get_version
1015CMAKE_ARGS="${CMAKE_ARGS} -DVERSION_STR=${VERSION_STR}"
1016
1017if [[ "X$LITE_ENABLE_AAR" = "Xon" ]]; then
1018    build_aar
1019elif [[ "X$LITE_PLATFORM" != "X" ]]; then
1020    build_lite
1021else
1022    echo "Invalid parameter"
1023fi
1024
1025if [[ -n "${SERVER_X86_64_PACKAGE_FILE}" ]] && [[ -n "${SERVER_AARCH64_PACKAGE_FILE}" ]]; then
1026    build_lite_x86_64_aarch64_jar
1027fi
1028