#! /bin/sh set -e # release.sh # # FRT - A Godot platform targeting single board computers # Copyright (c) 2017-2022 Emanuele Fornara # SPDX-License-Identifier: MIT # die() { echo $1 exit 1 } usage() { die "usage: release.sh arch tag..." } print_header() { echo "Building frt:$fver tag:$tag arch:$arch..." } release() { local bin [ -d releases ] || return bin=releases/frt_${fver}_${tag}_${arch}.bin cp tag_$tag/bin/godot.frt.opt$extrasuffix.$arch $bin $stripcmd $bin } build_common="platform=frt tools=no target=release use_static_cpp=yes -j 4" build() { local patch print_header if [ $arch = arm64v8 -a $fver = 216 ] ; then patch="CCFLAGS=-DNO_THREADS" ; fi ( cd tag_$tag ; nice scons frt_arch=$arch \ $archopts \ $gveropts \ $patch \ $build_common ) release } [ $# -gt 1 ] || usage arch=$1 case $arch in arm32v6) stripcmd="arm-linux-gnueabihf-strip" archopts="frt_cross=no" ;; arm32v7) stripcmd="arm-linux-gnueabihf-strip" archopts="frt_cross=auto" ;; arm64v8) stripcmd="aarch64-linux-gnu-strip" archopts="frt_cross=auto" ;; *) die "release.sh: invalid arch: $arch." esac shift [ -d releases ] || die "release.sh: no releases directory." export BUILD_NAME=frt while [ $# -gt 0 ] ; do case $1 in tag_*) [ -d $1 ] || die "release.sh: tag directory $1 not found." tag=`echo $1 | cut -b 5- | sed 's/\///g'` frth="tag_$tag/platform/frt/frt.h" [ -f $frth ] || die "release.sh: $frth not found." gver=`echo $tag | cut -b -2` case $gver in 2*) gveropts="use_llvm=yes" extrasuffix=".llvm" ;; 3*) gveropts="use_llvm=no module_webm_enabled=no" extrasuffix="" ;; *) die "release.sh: unsupported godot version: $gver." esac fver=`grep FRT_VERSION $frth \ | grep -o '".*"' \ | sed 's/[\."]//g'` build ;; *) die "release.sh: invalid tag $tag." esac shift done