build: prevent unnecessary recompilation from version header updates
This commit is contained in:
parent
d0444f9431
commit
ad4df3a580
1 changed files with 31 additions and 19 deletions
50
Makefile
50
Makefile
|
|
@ -16,7 +16,7 @@ endif
|
||||||
NAME = ft_ping
|
NAME = ft_ping
|
||||||
TEST_BIN = ft_ping.test
|
TEST_BIN = ft_ping.test
|
||||||
VERSION := 0.0.1
|
VERSION := 0.0.1
|
||||||
BUILD_DATE := $(shell date -u '+%Y-%m-%d %H:%M:%S UTC')
|
BUILD_DATE := $(shell git log -1 --format=%cd --date=format:'%Y-%m-%d %H:%M:%S' 2>/dev/null || date -u '+%Y-%m-%d %H:%M:%S')
|
||||||
GIT_COMMIT := $(shell git rev-parse --short HEAD 2>/dev/null || echo "nogit")
|
GIT_COMMIT := $(shell git rev-parse --short HEAD 2>/dev/null || echo "nogit")
|
||||||
|
|
||||||
.DEFAULT_GOAL := all
|
.DEFAULT_GOAL := all
|
||||||
|
|
@ -40,25 +40,37 @@ DEPS = $(OBJS:.o=.d)
|
||||||
|
|
||||||
VERSION_HEADER = includes/version_gen.h
|
VERSION_HEADER = includes/version_gen.h
|
||||||
|
|
||||||
$(VERSION_HEADER): Makefile
|
$(VERSION_HEADER): FORCE
|
||||||
@echo "/* Auto-generated - DO NOT EDIT */" > $@
|
@$(MAKE) --no-print-directory update-version-header
|
||||||
@echo "#ifndef PING_VERSION_GEN_H" >> $@
|
|
||||||
@echo "#define PING_VERSION_GEN_H" >> $@
|
|
||||||
@echo "#define PING_VERSION \"$(VERSION)\"" >> $@
|
|
||||||
@echo "#define PING_BUILD_DATE \"$(BUILD_DATE)\"" >> $@
|
|
||||||
@echo "#define PING_GIT_COMMIT \"$(GIT_COMMIT)\"" >> $@
|
|
||||||
@echo "" >> $@
|
|
||||||
@echo "typedef struct s_prog_name" >> $@
|
|
||||||
@echo "{" >> $@
|
|
||||||
@echo " char *alloc;" >> $@
|
|
||||||
@echo " const char *name;" >> $@
|
|
||||||
@echo "} t_prog_name;" >> $@
|
|
||||||
@echo "" >> $@
|
|
||||||
@echo "extern t_prog_name g_prog_name;" >> $@
|
|
||||||
@echo "" >> $@
|
|
||||||
@echo "#endif" >> $@
|
|
||||||
@echo "[OK] Version header generated"
|
|
||||||
|
|
||||||
|
.PHONY: update-version-header
|
||||||
|
update-version-header:
|
||||||
|
@NEW_HEADER=$$(mktemp); \
|
||||||
|
echo "/* Auto-generated - DO NOT EDIT */" > $$NEW_HEADER; \
|
||||||
|
echo "#ifndef PING_VERSION_GEN_H" >> $$NEW_HEADER; \
|
||||||
|
echo "#define PING_VERSION_GEN_H" >> $$NEW_HEADER; \
|
||||||
|
echo "#define PING_VERSION \"$(VERSION)\"" >> $$NEW_HEADER; \
|
||||||
|
echo "#define PING_BUILD_DATE \"$(BUILD_DATE)\"" >> $$NEW_HEADER; \
|
||||||
|
echo "#define PING_GIT_COMMIT \"$(GIT_COMMIT)\"" >> $$NEW_HEADER; \
|
||||||
|
echo "" >> $$NEW_HEADER; \
|
||||||
|
echo "typedef struct s_prog_name" >> $$NEW_HEADER; \
|
||||||
|
echo "{" >> $$NEW_HEADER; \
|
||||||
|
echo " char *alloc;" >> $$NEW_HEADER; \
|
||||||
|
echo " const char *name;" >> $$NEW_HEADER; \
|
||||||
|
echo "} t_prog_name;" >> $$NEW_HEADER; \
|
||||||
|
echo "" >> $$NEW_HEADER; \
|
||||||
|
echo "extern t_prog_name g_prog_name;" >> $$NEW_HEADER; \
|
||||||
|
echo "" >> $$NEW_HEADER; \
|
||||||
|
echo "#endif" >> $$NEW_HEADER; \
|
||||||
|
if [ ! -f $(VERSION_HEADER) ] || ! cmp -s $$NEW_HEADER $(VERSION_HEADER); then \
|
||||||
|
mv $$NEW_HEADER $(VERSION_HEADER); \
|
||||||
|
echo "[OK] Version header generated"; \
|
||||||
|
else \
|
||||||
|
rm -f $$NEW_HEADER; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
FORCE:
|
||||||
|
.PHONY: FORCE
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: $(LIBICMP_DEP) $(VERSION_HEADER) $(NAME)
|
all: $(LIBICMP_DEP) $(VERSION_HEADER) $(NAME)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue