gen_scmversion.sh (944B)
1 #!/bin/sh 2 3 VERSION_FILE="scmversion.cpp" 4 5 CURDIR=$(pwd) 6 if [ "$(uname -s)" = "Darwin" ]; then 7 cd "$(dirname $(python3 -c 'import os,sys;print(os.path.realpath(sys.argv[1]))' "$0"))" 8 else 9 cd $(dirname $(readlink -f $0)) 10 fi 11 12 13 HASH=$(git rev-parse HEAD) 14 BRANCH=$(git rev-parse --abbrev-ref HEAD | tr -d '\r\n') 15 TAG=$(git describe --dirty | tr -d '\r\n') 16 DATE=$(git log -1 --date=iso8601-strict --format=%cd) 17 18 cd $CURDIR 19 20 SIGNATURE_LINE="// ${HASH} ${BRANCH} ${TAG} ${DATE}" 21 22 if [ -f $VERSION_FILE ]; then 23 EXISTING_LINE=$(head -n1 $VERSION_FILE | tr -d '\n') 24 if [ "$EXISTING_LINE" = "$SIGNATURE_LINE" ]; then 25 echo "Signature matches, skipping writing ${VERSION_FILE}" 26 exit 0 27 fi 28 fi 29 30 echo "Writing ${VERSION_FILE}..." 31 32 cat > $VERSION_FILE << EOF 33 ${SIGNATURE_LINE} 34 const char* g_scm_hash_str = "${HASH}"; 35 const char* g_scm_branch_str = "${BRANCH}"; 36 const char* g_scm_tag_str = "${TAG}"; 37 const char* g_scm_date_str = "${DATE}"; 38 39 EOF 40