用到的shell脚本备份

用到的shell脚本备份 

#!/bin/bash

#出现错误即退出执行
set -e 

build_dir=$(pwd)
root_dir=$(dirname "$PWD")

cd ${root_dir}

function enable_release_type() {
	device=$1
	if [ "$device" = "mlu" ]; then
		sed -i "s/.*\(DBG_ENABLE\s*:=\s*\).*\$/\10/" Makefile_mlu   #如果debug是1,改成0.
	elif [ "$device" = "jetson" ]; then
		sed -i "s/.*\(DBG_ENABLE\s*:=\s*\).*\$/\10/" Makefile_jetson
	else 
		sed -i "s/.*\(DBG_ENABLE\s*:=\s*\).*\$/\10/" Makefile
	fi
}

function build() {
	device=$1
	
	#设置为release版本
	enable_release_type $device
	
	if [ "$device" = "mlu" ]; then
		make -f Makefile_mlu clean
		make -f Makefile_mlu -j8
	elif [ "$device" = "jetson" ]; then
		make -f Makefile_jetson clean
		make -f Makefile_jetson -j8
	else 
		make clean
		make -j8
	fi
}

function build_caffe() {
	device=$1
	
	if [ "$device" = "mlu" ]; then
		if [ ! -d "/usr/local/neuware" ]; then	 #如果目录不存在,打印错误信息呢,退出。	
			echo "/usr/local/neuware不存在,首先安装NEUWARE软件栈"
			exit 1
		fi
		
		export NEUWARE_HOME=/usr/local/neuware #寒武纪环境变量
		
		cd ${root_dir}/caffe_mlu/caffe/src/caffe/scripts
		
		chmod +x ./*.sh
		./build_caffe_mlu270_cambricon_release.sh
		
		\cp ${root_dir}/caffe_mlu/caffe/lib/*.a ${root_dir}/cafl_sdk/lib  #\表示强制替换,
	else 
		#设置protoc目录
		if [ "$device" = "jetson" ]; then
			export PATH=$PATH:${root_dir}/bin/jetson
			export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${root_dir}/bin/jetson
		else
			export PATH=$PATH:${root_dir}/bin/jetson
			export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${root_dir}/bin/jetson
		fi
			
		cd ${root_dir}/caffe_gcs
		#make clean
		make -j32
		
		\cp ${root_dir}/caffe_gcs/.build_release/lib/*.a ${root_dir}/cafl_sdk/lib
	fi
}

function config_lib() {
	device=$1
	
	if [ "$device" = "mlu" ]; then
		chmod +x config_lib_mlu.sh
		./config_lib_mlu.sh
	elif [ "$device" = "jetson" ]; then
		chmod +x config_lib_jetson.sh
		./config_lib_jetson.sh
	else 
		chmod +x config_lib_gpu.sh
		./config_lib_gpu.sh
	fi
}

#build all services and libraries
function build_all(){
	device=$1
	
	echo "开始配置依赖库..."
	cd ${root_dir}/lib
	config_lib $device
	echo "**********完成依赖库配置**********"
	echo
	
	echo "1)开始编译caffe..."
	build_caffe $device
	echo "**********完成编译caffe**********"
	echo
		
	echo "2)开始编译cafl_sdk..."
	cd ${root_dir}/cafl_sdk
	build $device
	echo "**********完成编译cafl_sdk**********"
	echo
	
	if [ "$device" != "mlu" ]; then
		echo "3)开始编译cuda_utils..."
		cd ${root_dir}/cuda_utils
		build $device
		echo "**********完成编译cuda_utils**********"
		echo
	
		echo "4)开始编译trteng_exp..."
		cd ${root_dir}/trteng_exp
		build $device
		echo "**********完成编译trteng_exp**********"
		echo
		
		echo "5)开始编译prot2trt_v2..."
		cd ${root_dir}/prot2trt_v2
		ln -snf $(pwd)/lib/libnvparsers.so.7 $(pwd)/lib/libnvparsers.so
		build $device
		echo "**********完成编译prot2trt_v2**********"
		echo
	fi
	
	echo "6)开始编译cfldwp2..."
	cd ${root_dir}/cfldwp2
	build $device
	echo "**********完成编译cfldwp2**********"
	echo
	
	echo "<----------完成编译[${device}]设备上的[计算]库---------->"
}

case "$1" in #入口
	-h|--help)
		echo "Usage: $0 [option...]"
		echo "-h, --help      for help information"
		echo "-g, --gpu       build for gpu device"
		echo "-j, --jetson    build for jetson arch"
		echo "-m, --mlu       build for mlu device"
		;;
	-g|--gpu)
		echo
		echo
		echo "<----------start building for [gpu] device---------->"
		echo
		build_all
		;;
	-j|--jetson)
		echo
		echo
		echo "<----------start building for [jetson] device---------->"
		echo
		build_all jetson
		;;
	-m|--mlu)
		echo
		echo
		echo "<----------start building for [mlu] device---------->"
		echo
		build_all mlu
		;;
	*)
		echo "Please use $0 -h|--help for more information"
esac

exit 0 






猜你喜欢

转载自blog.csdn.net/u013171226/article/details/111835814