Git fork

Makefile: propagate Git version via generated header

We set up a couple of preprocessor macros when compiling Git that
propagate the version that Git was built from to `git version` et al.
The way this is set up makes it harder than necessary to reuse the
infrastructure across the different build systems.

Refactor this such that we generate a "version-def.h" header via
`GIT-VERSION-GEN` instead.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

authored by

Patrick Steinhardt and committed by
Junio C Hamano
0c8d3395 4838deab

+35 -11
+1
.gitignore
··· 195 195 /config-list.h 196 196 /command-list.h 197 197 /hook-list.h 198 + /version-def.h 198 199 *.tar.gz 199 200 *.dsc 200 201 *.deb
+7
GIT-VERSION-GEN
··· 52 52 fi 53 53 54 54 GIT_VERSION=$(expr "$VN" : v*'\(.*\)') 55 + GIT_BUILT_FROM_COMMIT=$(git -C "$SOURCE_DIR" rev-parse -q --verify HEAD 2>/dev/null) 56 + if test -z "$GIT_USER_AGENT" 57 + then 58 + GIT_USER_AGENT="git/$GIT_VERSION" 59 + fi 55 60 56 61 read GIT_MAJOR_VERSION GIT_MINOR_VERSION GIT_MICRO_VERSION trailing <<EOF 57 62 $(echo "$GIT_VERSION" 0 0 0 | tr '.a-zA-Z-' ' ') ··· 61 66 -e "s|@GIT_MAJOR_VERSION@|$GIT_MAJOR_VERSION|" \ 62 67 -e "s|@GIT_MINOR_VERSION@|$GIT_MINOR_VERSION|" \ 63 68 -e "s|@GIT_MICRO_VERSION@|$GIT_MICRO_VERSION|" \ 69 + -e "s|@GIT_BUILT_FROM_COMMIT@|$GIT_BUILT_FROM_COMMIT|" \ 70 + -e "s|@GIT_USER_AGENT@|$GIT_USER_AGENT|" \ 64 71 "$INPUT" >"$OUTPUT"+ 65 72 66 73 if ! test -f "$OUTPUT" || ! cmp "$OUTPUT"+ "$OUTPUT" >/dev/null
+6 -7
Makefile
··· 2508 2508 pager.sp pager.s pager.o: EXTRA_CPPFLAGS = \ 2509 2509 -DPAGER_ENV='$(PAGER_ENV_CQ_SQ)' 2510 2510 2511 - version.sp version.s version.o: GIT-VERSION-FILE GIT-USER-AGENT 2512 - version.sp version.s version.o: EXTRA_CPPFLAGS = \ 2513 - '-DGIT_VERSION="$(GIT_VERSION)"' \ 2514 - '-DGIT_USER_AGENT=$(GIT_USER_AGENT_CQ_SQ)' \ 2515 - '-DGIT_BUILT_FROM_COMMIT="$(shell \ 2516 - GIT_CEILING_DIRECTORIES="$(CURDIR)/.." \ 2517 - git rev-parse -q --verify HEAD 2>/dev/null)"' 2511 + version-def.h: version-def.h.in GIT-VERSION-GEN GIT-VERSION-FILE GIT-USER-AGENT 2512 + $(QUIET_GEN)GIT_USER_AGENT="$(GIT_USER_AGENT)" $(SHELL_PATH) ./GIT-VERSION-GEN "$(shell pwd)" $< $@+ 2513 + @if cmp $@+ $@ >/dev/null 2>&1; then $(RM) $@+; else mv $@+ $@; fi 2514 + 2515 + version.sp version.s version.o: version-def.h 2518 2516 2519 2517 $(BUILT_INS): git$X 2520 2518 $(QUIET_BUILT_IN)$(RM) $@ && \ ··· 3728 3726 $(RM) $(FUZZ_PROGRAMS) 3729 3727 $(RM) $(SP_OBJ) 3730 3728 $(RM) $(HCC) 3729 + $(RM) version-def.h 3731 3730 $(RM) -r bin-wrappers $(dep_dirs) $(compdb_dir) compile_commands.json 3732 3731 $(RM) -r po/build/ 3733 3732 $(RM) *.pyc *.pyo */*.pyc */*.pyo $(GENERATED_H) $(ETAGS_TARGET) tags cscope*
+12 -4
contrib/buildsystems/CMakeLists.txt
··· 229 229 GIT_HTML_PATH="share/doc/git-doc" 230 230 DEFAULT_HELP_FORMAT="html" 231 231 DEFAULT_GIT_TEMPLATE_DIR="share/git-core/templates" 232 - GIT_VERSION="${PROJECT_VERSION}.GIT" 233 - GIT_USER_AGENT="git/${PROJECT_VERSION}.GIT" 234 - BINDIR="bin" 235 - GIT_BUILT_FROM_COMMIT="") 232 + BINDIR="bin") 236 233 237 234 if(WIN32) 238 235 set(FALLBACK_RUNTIME_PREFIX /mingw64) ··· 668 665 669 666 list(TRANSFORM libgit_SOURCES PREPEND "${CMAKE_SOURCE_DIR}/") 670 667 list(TRANSFORM compat_SOURCES PREPEND "${CMAKE_SOURCE_DIR}/") 668 + 669 + add_custom_command(OUTPUT "${CMAKE_BINARY_DIR}/version-def.h" 670 + COMMAND "${SH_EXE}" "${CMAKE_SOURCE_DIR}/GIT-VERSION-GEN" 671 + "${CMAKE_SOURCE_DIR}" 672 + "${CMAKE_SOURCE_DIR}/version-def.h.in" 673 + "${CMAKE_BINARY_DIR}/version-def.h" 674 + DEPENDS "${SH_EXE}" "${CMAKE_SOURCE_DIR}/GIT-VERSION-GEN" 675 + "${CMAKE_SOURCE_DIR}/version-def.h.in" 676 + VERBATIM) 677 + list(APPEND libgit_SOURCES "${CMAKE_BINARY_DIR}/version-def.h") 678 + 671 679 add_library(libgit ${libgit_SOURCES} ${compat_SOURCES}) 672 680 673 681 #libxdiff
+8
version-def.h.in
··· 1 + #ifndef VERSION_DEF_H 2 + #define VERSION_DEF_H 3 + 4 + #define GIT_VERSION "@GIT_VERSION@" 5 + #define GIT_BUILT_FROM_COMMIT "@GIT_BUILT_FROM_COMMIT@" 6 + #define GIT_USER_AGENT "@GIT_USER_AGENT@" 7 + 8 + #endif /* VERSION_DEF_H */
+1
version.c
··· 1 1 #include "git-compat-util.h" 2 2 #include "version.h" 3 + #include "version-def.h" 3 4 #include "strbuf.h" 4 5 5 6 const char git_version_string[] = GIT_VERSION;