#!/bin/bash # 接收参数 TARGET="$2" WORK="$3" STAGE=$9 # 记录已经完成的编译阶段,如果上一次编译发生错误,则提前终此脚本运行 function complete_stage() { local next=$1 cd $SHELLROOT if [ $2 -eq 0 ] then echo -n $next > $TARGET/stage else exit 1 fi sleep 2 } ####################################################################################################################################################################################### # 开始编译 cd $SHELLROOT # 建入到 本编译脚本项目 的根目录 mkdir -p tempDIR # 新建 本编译脚本项目 在运行所需要的临时工作目录 echo -ne "\033]0;Preparing\007" # 检查当前编译工作已经进入哪个阶段 if [ ! $STAGE ] ; then S=`cat $TARGET/stage 2>/dev/null` if [[ ! $S ]] ; then STAGE=0 else STAGE=$S fi fi echo " * 使用 GCC 编译器" # STAGE 0.1 -- zlib NEXT=0.2 if [[ $STAGE && $STAGE < $NEXT ]] ; then echo $BOUNDARYSTART ${SHELLROOT}/compileing/compile-zlib.sh "$TARGET" complete_stage $NEXT $? echo $BOUNDARYEND fi # STAGE 0.2 -- bzip2 NEXT=0.3 if [[ $STAGE && $STAGE < $NEXT ]] ; then echo $BOUNDARYSTART ${SHELLROOT}/compileing/compile-bzip2.sh "$TARGET" complete_stage $NEXT $? echo $BOUNDARYEND fi # STAGE 0.3 -- lzma NEXT=0.4 if [[ $STAGE && $STAGE < $NEXT ]] ; then echo $BOUNDARYSTART ${SHELLROOT}/compileing/compile-lzma.sh "$TARGET" "$CONFIGOPTS" complete_stage $NEXT $? echo $BOUNDARYEND fi # STAGE 1.1 -- Boost NEXT=1.2 if [[ $STAGE && $STAGE < $NEXT ]] ; then echo $BOUNDARYSTART ${SHELLROOT}/compileing/compile-boost.sh "$TARGET" "$CONFIGOPTS" complete_stage $NEXT $? echo $BOUNDARYEND fi # STAGE 1.2 -- Jpeg NEXT=1.3 if [[ $STAGE && $STAGE < $NEXT ]] ; then echo $BOUNDARYSTART ${SHELLROOT}/compileing/compile-Jpeg.sh "$TARGET" "$CONFIGOPTS" complete_stage $NEXT $? echo $BOUNDARYEND fi # STAGE 1.3 -- Tiff NEXT=1.4 if [[ $STAGE && $STAGE < $NEXT ]] ; then echo $BOUNDARYSTART ${SHELLROOT}/compileing/compile-Tiff.sh "$TARGET" "$CONFIGOPTS" complete_stage $NEXT $? echo $BOUNDARYEND fi # STAGE 1.4 -- PNG NEXT=1.5 if [[ $STAGE && $STAGE < $NEXT ]] ; then echo $BOUNDARYSTART ${SHELLROOT}/compileing/compile-PNG.sh "$TARGET" "$CONFIGOPTS" complete_stage $NEXT $? echo $BOUNDARYEND fi # STAGE 1.5 -- FreeType NEXT=1.6 if [[ $STAGE && $STAGE < $NEXT ]] ; then echo $BOUNDARYSTART ${SHELLROOT}/compileing/compile-FreeType.sh "$TARGET" "$CONFIGOPTS" complete_stage $NEXT $? echo $BOUNDARYEND fi # STAGE 1.6 -- OpenEXR NEXT=2.1 if [[ $STAGE && $STAGE < $NEXT ]] ; then echo $BOUNDARYSTART ${SHELLROOT}/compileing/compile-OpenEXR.sh "$TARGET" "$CONFIGOPTS" complete_stage $NEXT $? echo $BOUNDARYEND fi # STAGE 2.1 -- OpenImageIO NEXT=2.2 if [[ $STAGE && $STAGE < $NEXT ]] ; then echo $BOUNDARYSTART ${SHELLROOT}/compileing/compile-OpenImageIO.sh "$TARGET" "$CONFIGOPTS" complete_stage $NEXT $? echo $BOUNDARYEND fi # STAGE 3 -- Qt NEXT=4.1 if [[ $STAGE && $STAGE < $NEXT ]] ; then echo $BOUNDARYSTART ${SHELLROOT}/compileing/compile-qt.sh "$TARGET" "$CONFIGOPTS" complete_stage $NEXT $? echo $BOUNDARYEND fi # STAGE 4.1 -- Embree NEXT=4.2 if [[ $STAGE && $STAGE < $NEXT ]] ; then echo $BOUNDARYSTART ${SHELLROOT}/compileing/compile-Embree.sh "$TARGET" complete_stage $NEXT $? echo $BOUNDARYEND fi # STAGE 4.2 -- Oidn NEXT=4.3 if [[ $STAGE && $STAGE < $NEXT ]] ; then echo $BOUNDARYSTART ${SHELLROOT}/compileing/compile-Oidn.sh "$TARGET" complete_stage $NEXT $? echo $BOUNDARYEND fi # STAGE 4.3 -- C-blosc NEXT=4.4 if [[ $STAGE && $STAGE < $NEXT ]] ; then echo $BOUNDARYSTART ${SHELLROOT}/compileing/compile-CBlosc.sh "$TARGET" complete_stage $NEXT $? echo $BOUNDARYEND fi # STAGE 4.4 -- TBB NEXT=4.5 if [[ $STAGE && $STAGE < $NEXT ]] ; then echo $BOUNDARYSTART ${SHELLROOT}/compileing/compile-TBB.sh "$TARGET" complete_stage $NEXT $? echo $BOUNDARYEND fi # STAGE 4.5 -- NVRTC NEXT=5 if [[ $STAGE && $STAGE < $NEXT ]] ; then echo $BOUNDARYSTART ${SHELLROOT}/compileing/compile-NVRTC.sh "$TARGET" complete_stage $NEXT $? echo $BOUNDARYEND fi # STAGE 5 -- LuxCore NEXT=6 if [[ $STAGE && $STAGE < $NEXT ]] ; then echo $BOUNDARYSTART ${SHELLROOT}/compileing/compile-LuxCore.sh "$TARGET" complete_stage $NEXT $? echo $BOUNDARYEND fi # STAGE 6 -- LuxMark NEXT=7 if [[ $STAGE && $STAGE < $NEXT ]] ; then echo $BOUNDARYSTART ${SHELLROOT}/compileing/compile-LuxMark.sh complete_stage $NEXT $? echo $BOUNDARYEND fi # 编译已经完成,执行 install脚本,完成最后的安装部署 echo $BOUNDARYSTART echo -e "\n 正在完成最后的安装部署\n" if ! ${SHELLROOT}/utils/install "$TARGET" "LuxCore" "${SHELLROOT}/distfiles" ; then echo " * 安装失败" else echo -e "\n * 安装成功 $TARGET/$LUX_TAG" echo -e " * 恭喜你,LuxCore已经编译安装成功\n" fi echo $BOUNDARYEND sleep 2 exit 0