#!/bin/sh
if [ $# -gt 1 ] ; then
cd " $2 "
fi
if [ $# -gt 0 ] ; then
FILE = " $1 "
shift
if [ -f " $FILE " ] ; then
INFO = " $( head -n 1 " $FILE " ) "
fi
else
echo " Usage: $0 <filename> <srcroot> "
exit 1
fi
DESC = ""
SUFFIX = ""
if [ " ${ BITCOIN_GENBUILD_NO_GIT } " != "1" -a -e " $( which git 2>/dev/null) " -a " $( git rev-parse --is-inside-work-tree 2>/dev/null) " = "true" -a " $( git status --porcelain -u no --ignored " $0 " | cut -b1) " != "?" ] ; then
# clean 'dirty' status of touched files that haven't been modified
git diff >/dev/null 2>/dev/null
# if latest commit is tagged and not dirty, then override using the tag name
RAWDESC = $( git describe --abbrev= 0 2>/dev/null)
if [ " $( git rev-parse HEAD) " = " $( git rev-list -1 $RAWDESC 2>/dev/null) " ] ; then
git diff-index --quiet HEAD -- && DESC = $RAWDESC
fi
# otherwise generate suffix from git, i.e. string like "59887e8-dirty"
SUFFIX = $( git rev-parse --short HEAD)
git diff-index --quiet HEAD -- || SUFFIX = " $SUFFIX -dirty "
fi
if [ -n " $DESC " ] ; then
NEWINFO = " #define BUILD_DESC \" $DESC \" "
elif [ -n " $SUFFIX " ] ; then
NEWINFO = " #define BUILD_SUFFIX $SUFFIX "
else
NEWINFO = "// No build information available"
fi
# only update build.h if necessary
if [ " $INFO " != " $NEWINFO " ] ; then
echo " $NEWINFO " >" $FILE "
fi