#!/bin/bash # Copyright 2019 Huawei Technologies Co., Ltd # # Licensed 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. # ============================================================================ PWD_PATH=`pwd` THIRD_PARTY_PATH=$(cd "$(dirname $0)"; pwd) if [ $# -lt 1 ]; then echo "Usage: sh apply_patches.sh [build_dir]" echo " build_dir is the directory where you type \"cmake\"" echo " Open source software incubator-tvm will be copied to build_dir" echo " where patches will be applied on." exit 1 fi BUILD_PATH=$1 if [ -d ${BUILD_PATH}/incubator-tvm ]; then rm -rf ${BUILD_PATH}/incubator-tvm fi DLPACK_PATH=$2 DMLC_PATH=$3 RANG_PATH=$4 TVM_PATH=$5 mkdir ${BUILD_PATH}/incubator-tvm cp -rf ${TVM_PATH}/* ${BUILD_PATH}/incubator-tvm/ cp -rf ${DLPACK_PATH}/* ${BUILD_PATH}/incubator-tvm/3rdparty/dlpack/ cp -rf ${DMLC_PATH}/* ${BUILD_PATH}/incubator-tvm/3rdparty/dmlc-core/ cp -rf ${RANG_PATH}/* ${BUILD_PATH}/incubator-tvm/3rdparty/rang/ check_dir_not_empty() { if [ ! $# -eq 1 ]; then echo "Usage: check_dir_not_empty dir_path" exit 1 fi if [ ! -d $1 ]; then echo "Directory $1 does not exist." exit 1 fi fileCounts=`ls $1 | wc -l` if [ ${fileCounts} -eq 0 ]; then echo "Directory $1 is empty." exit 1 fi } apply_patch() { if [ ! $# -eq 1 ]; then echo "Usage: apply_patch patch_name" exit 1 fi if [ ! -f $1 ]; then echo "Patch $1 does not exist." exit 1 fi patch -p1 < $1 if [ $? -eq 0 ]; then echo "Patch $1 applied successfully." else echo "Patch $1 not applied." fi } # apply patches on tvm TVM_PATH=${BUILD_PATH}/incubator-tvm TVM_PATCH_PATH=${THIRD_PARTY_PATH}/patch/incubator-tvm check_dir_not_empty "${TVM_PATH}" check_dir_not_empty "${TVM_PATCH_PATH}" cd ${TVM_PATH} apply_patch "${TVM_PATCH_PATH}/cmake.patch" apply_patch "${TVM_PATCH_PATH}/find_library.patch" apply_patch "${TVM_PATCH_PATH}/include.patch" apply_patch "${TVM_PATCH_PATH}/src_pass.patch" cd ${PWD_PATH}