diff options
Diffstat (limited to 'py')
-rwxr-xr-x | py/py-version.sh | 16 | ||||
-rw-r--r-- | py/py.mk | 10 |
2 files changed, 25 insertions, 1 deletions
diff --git a/py/py-version.sh b/py/py-version.sh new file mode 100755 index 0000000000..f574b574f4 --- /dev/null +++ b/py/py-version.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +git_hash="$(git rev-parse --short HEAD 2> /dev/null || echo unknown)" +git_files_are_clean=1 +# Check if there are any modified files. +git diff --no-ext-diff --quiet --exit-code 2> /dev/null || git_files_are_clean=0 +# Check if there are any staged files. +git diff-index --cached --quiet HEAD -- 2> /dev/null || git_files_are_clean=0 +if [ "${git_files_are_clean}" != "1" ]; then + git_hash="${git_hash}-dirty" +fi +cat <<EOF +// This file was generated by py/py-version.sh +#define MICROPY_GIT_HASH "${git_hash}" +#define MICROPY_BUILD_DATE "$(date '+%Y-%m-%d')" +EOF @@ -90,6 +90,14 @@ PY_O_BASENAME = \ # prepend the build destination prefix to the py object files PY_O = $(addprefix $(PY_BUILD)/, $(PY_O_BASENAME)) +# Anything that depends on FORCE will be considered out-of-date +FORCE: +.PHONY: FORCE + +$(PY_BUILD)/py-version.h: FORCE + $(Q)$(PY_SRC)/py-version.sh > $@.tmp + $(Q)if [ -f "$@" ] && cmp -s $@ $@.tmp; then rm $@.tmp; else echo "Generating $@"; mv $@.tmp $@; fi + # qstr data # Adding an order only dependency on $(PY_BUILD) causes $(PY_BUILD) to get @@ -104,7 +112,7 @@ $(PY_BUILD)/qstrdefs.generated.h: $(PY_QSTR_DEFS) $(QSTR_DEFS) $(PY_SRC)/makeqst # the right .o's to get recompiled if the generated.h file changes. Adding # an order-only dependendency to all of the .o's will cause the generated .h # to get built before we try to compile any of them. -$(PY_O): | $(PY_BUILD)/qstrdefs.generated.h +$(PY_O): | $(PY_BUILD)/qstrdefs.generated.h $(PY_BUILD)/py-version.h # emitters |