code_device/build.sh

235 lines
6.8 KiB
Bash
Executable File

# Main and minor version definition
oem=$1 #厂商
cpu=$(arch) #cpu架构
sys=$(cat /etc/issue)
sys=${sys%% *} #操作系统
# add PIDs of OEM for build DS component ... 2023-07-13
declare -a devpids
docpath="" #哪种打包方式 uos 还是kylin
#web so 只走kylin的打包方式
if [ $2 ];
then
docpath=$2 #可以手动设置操作系统来进行打包
echo "$docpath"
else
if [ "$sys" == "UnionTech" ];
then
docpath=uos
else
docpath=kylin
fi
fi
script_dir=$(cd $(dirname $0);pwd)
cd $script_dir
echo $script_dir
pwd
err=0
mainverstr=$(cat ../sdk/include/huagao/brand.h |grep VERSION_MAIN)
mainverstr=${mainverstr: -3}
mainverstr=$(echo $mainverstr)
minver=$(cat ../sdk/include/huagao/brand.h |grep VERSION_SUB)
minver=${minver: -3}
minver=$(echo $minver)
mainverstr="s/ver_1/$mainverstr/g" #版本控制
minverstr="s/ver_2/"
verstr3="s/ver_3/"
ver3=10
cp hgsane/CMakeLists.txt hgsane/CMakeLists.txtbkp
cp hgdriver/hgdev/CMakeLists.txt hgdriver/hgdev/CMakeLists.txtbkp
cp hgdriver/wrapper/CMakeLists.txt hgdriver/wrapper/CMakeLists.txtbkp
#sudo apt install libudev-dev
minverstr=${minverstr}${minver}"/g"
echo "minor version replacing pattern: "${minverstr}
echo $mainverstr
if [ "$oem" == "hw" ]; then
ver3=16
sed -i "s/DOEM_HUAGAO/DOEM_HANWANG/g" hgdriver/hgdev/CMakeLists.txt
sed -i "s/DOEM_HUAGAO/DOEM_HANWANG/g" hgdriver/wrapper/CMakeLists.txt
sed -i "s/1%m%d1/1%m%d6/g" hgdriver/wrapper/CMakeLists.txt
devpids=(1000 1002 7000 7002 7039 8000 9000)
elif [ "$oem" == "lsc" ]; then
ver3=14
sed -i "s/DOEM_HUAGAO/DOEM_LISICHENG/g" hgdriver/hgdev/CMakeLists.txt
sed -i "s/DOEM_HUAGAO/DOEM_LISICHENG/g" hgdriver/wrapper/CMakeLists.txt
sed -i "s/1%m%d1/1%m%d7/g" hgdriver/wrapper/CMakeLists.txt
devpids=(8420 8520 8620 8730)
elif [ "$oem" == "cts" ]; then
ver3=18
sed -i "s/DOEM_HUAGAO/DOEM_CANGTIAN/g" hgdriver/hgdev/CMakeLists.txt
sed -i "s/DOEM_HUAGAO/DOEM_CANGTIAN/g" hgdriver/wrapper/CMakeLists.txt
sed -i "s/1%m%d1/1%m%d8/g" hgdriver/wrapper/CMakeLists.txt
devpids=(138 238 6005 6006)
elif [ "$oem" == "zj" ]; then
ver3=20
sed -i "s/DOEM_HUAGAO/DOEM_ZHONGJING/g" hgdriver/hgdev/CMakeLists.txt
sed -i "s/DOEM_HUAGAO/DOEM_ZHONGJING/g" hgdriver/wrapper/CMakeLists.txt
sed -i "s/1%m%d1/1%m%d9/g" hgdriver/wrapper/CMakeLists.txt
devpids=(9200)
elif [ "$oem" == "zg" ]; then
ver3=17
sed -i "s/DOEM_HUAGAO/DOEM_ZIGUANG/g" hgdriver/hgdev/CMakeLists.txt
sed -i "s/DOEM_HUAGAO/DOEM_ZIGUANG/g" hgdriver/wrapper/CMakeLists.txt
sed -i "s/1%m%d1/1%m%d9/g" hgdriver/wrapper/CMakeLists.txt
devpids=(200 210)
else
devpids=(100 200 300 400)
oem="hg"
fi
project_sanename="project(sane-$oem"sane")"
project_drivername="project($oem"driver")"
echo $project_sanename $project_drivername
#project(sane-hgsane)
pwd
if [ "$oem" != "" ]; then
#sed -i "1s/.*/$project_sanename/g" hgsane/CMakeLists.txt
#sed -i "1s/.*/$project_drivername/g" hgdriver/wrapper/CMakeLists.txt
sed -i "s/hgsane/$oem"sane"/g" hgsane/CMakeLists.txt
sed -i "s/hgdriver/$oem"driver"/g" hgdriver/wrapper/CMakeLists.txt hgsane/CMakeLists.txt
echo $oem $oem
fi
ver3=$[$ver3 * 10]
if [ "$cpu" == "x86_64" ]; then
ver3=$[$ver3 + 5]
elif [ "$cpu" == "aarch64" ]; then
ver3=$[$ver3 + 2]
elif [ "$cpu" == "mips64" ]; then
ver3=$[$ver3 + 3]
elif [ "$cpu" == "loongarch64" ]; then
ver3=$[$ver3 + 4]
fi
ver3=$[$ver3 * 100]
if [ "$sys" == "UnionTech" ];then
# uos ...
ver3=$[$ver3 + 20]
elif [ "$sys" == "Kylin" ];then
# kylin ...
ver3=$[$ver3 + 21]
else
# unknown OS, set as linux
ver3=$[$ver3 + 10]
fi
verstr3=${verstr3}"${ver3}/g"
echo "3rd version replacing pattern: "${verstr3}
sed -i ${mainverstr} hgdriver/wrapper/CMakeLists.txt
sed -i ${minverstr} hgdriver/wrapper/CMakeLists.txt
sed -i ${verstr3} hgdriver/wrapper/CMakeLists.txt
#设置库的链接路径是 kylin 还是uos
if [ "$sys" == "UnionTech" ];
then
sed -i "s/kylin/uos/g" hgdriver/wrapper/CMakeLists.txt
sed -i "s/kylin/uos/g" hgsane/CMakeLists.txt
elif [ "$sys" == "Kylin" ];
then
sed -i "s/uos/kylin/g" hgdriver/wrapper/CMakeLists.txt
sed -i "s/uos/kylin/g" hgsane/CMakeLists.txt
else
sed -i "s/uos/kylin/g" hgdriver/wrapper/CMakeLists.txt
sed -i "s/uos/kylin/g" hgsane/CMakeLists.txt
echo "其他操作系统"
fi
#设置代码宏定义
if [ "$docpath" == "uos" ];
then
sed -i "s/-DKYLIN/-DUOS/g" hgdriver/wrapper/CMakeLists.txt
sed -i "s/-DKYLIN/-DUOS/g" hgdriver/hgdev/CMakeLists.txt
else
sed -i "s/-DUOS/-DKYLIN/g" hgdriver/wrapper/CMakeLists.txt
sed -i "s/-DUOS/-DKYLIN/g" hgdriver/hgdev/CMakeLists.txt
fi
echo $docpath
cd ../
if [ -f ./build/CMakeCache.txt ]; then
echo ""
#rm -rf ./build/*
else
mkdir build
fi
cd build
cmake ../code_device
make -j6
make -j6
if [ $? -ne 0 ];then
err=1
echo "--------------------------------------make fail---------------------------------------"
# commented, we should restore the CMakeLists.txts...
else
err=0
echo "--------------------------------------make succeed------------------------------------"
fi
#make
if [ -f ../code_device/hgsane/CMakeLists.txtbkp ]; then
mv ../code_device/hgsane/CMakeLists.txtbkp ../code_device/hgsane/CMakeLists.txt
fi
if [ -f ../code_device/hgdriver/hgdev/CMakeLists.txtbkp ]; then
mv ../code_device/hgdriver/hgdev/CMakeLists.txtbkp ../code_device/hgdriver/hgdev/CMakeLists.txt
pwd
fi
if [ -f ../code_device/hgdriver/wrapper/CMakeLists.txtbkp ]; then
mv ../code_device/hgdriver/wrapper/CMakeLists.txtbkp ../code_device/hgdriver/wrapper/CMakeLists.txt
pwd
fi
echo "******************************************************************************************"
echo "* *"
echo "* build DS components ... *"
echo "* *"
echo "******************************************************************************************"
echo
choice="y"
if [ "$choice" == "y" ] || [ "$choice" == "Y" ]; then
cd ../code_device/twain/dsm
./build.sh $docpath $cpu
cd ../ds
for pid in ${devpids[@]}
do
./build.sh $oem $pid "nocopy"
done
cd ../
fi
exit $err