X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fcommon%2FMakefile.am;h=941bbaacdd0000c4dc15f1dde11647833981f0cd;hb=1f316595674936318a79ceb02911d0a5713fcde3;hp=16508165d77e42b2329606ca34b751c0a417b246;hpb=4a2a7ed15b45fc79b89c81a909279639374f0999;p=babeltrace.git diff --git a/src/common/Makefile.am b/src/common/Makefile.am index 16508165..941bbaac 100644 --- a/src/common/Makefile.am +++ b/src/common/Makefile.am @@ -15,9 +15,9 @@ noinst_HEADERS = \ list.h \ macros.h \ mmap-align.h \ - safe.h \ - version.h \ - version.i + safe.h + +# The following section is based on a similar feature in LTTng-tools. ## ## This target generates an include file that contains the git version @@ -41,34 +41,61 @@ noinst_HEADERS = \ ## overwrite the git version with an empty string in "version.i.tmp". ## ## If we don't have a "version.i.tmp" nor a "version.i", generate an empty -## string as a failover. +## string as a failover. If a "version.i" is present, for example when building +## from a distribution tarball, get the git_version using grep. ## -## If we don't have a "version.i" or we have both files and they are different, -## copy "version.i.tmp" over "version.i". This way the dependent targets are -## only rebuilt when the version string changes. +## Fetch the BT_VERSION_EXTRA_NAME define from "version/extra_version_name" and output it +## to "version.i.tmp". +## +## Fetch the BT_VERSION_EXTRA_DESCRIPTION define from "version/extra_version_description", +## sanitize and format it with a sed script to replace all non-alpha-numeric values +## with "-" and join all lines by replacing "\n" with litteral string c-style "\n" and +## output it to "version.i.tmp". +## +## Repeat the same logic for the "version/extra_patches" directory. +## Data fetched from "version/extra_patches" must be sanitized and +## formatted. +## The data is fetched using "ls" with an ignore pattern for the README.adoc file. +## The sanitize step uses sed with a script to replace all +## non-alpha-numeric values, except " " (space), to "-". +## The formatting step uses sed with a script to join all lines +## by replacing "\n" with litteral string c-style "\n". +## +## If we don't have a "version.i" or we have both files (version.i, version.i.tmp) +## and they are different, copy "version.i.tmp" over "version.i". +## This way the dependent targets are only rebuilt when the git version +## string or either one of extra version string change. ## - version_verbose = $(version_verbose_@AM_V@) version_verbose_ = $(version_verbose_@AM_DEFAULT_V@) -version_verbose_0 = @echo " GEN " $@; +version_verbose_0 = @echo " GEN " $@; version.i: $(version_verbose)rm -f version.i.tmp; \ + if (test ! -f version.i && test -f "$(top_srcdir)/include/version.i"); then \ + cp "$(top_srcdir)/include/version.i" version.i; \ + fi; \ if (test -r "$(top_srcdir)/bootstrap" && test -r "$(top_srcdir)/.git") && \ test -x "`which git 2>&1;true`"; then \ GIT_VERSION_STR="`cd "$(top_srcdir)" && git describe --tags --dirty`"; \ GIT_CURRENT_TAG="`cd "$(top_srcdir)" && git describe --tags --exact-match --match="v[0-9]*" HEAD 2> /dev/null`"; \ - echo "#define GIT_VERSION \"$$GIT_VERSION_STR\"" > version.i.tmp; \ + echo "#define BT_VERSION_GIT \"$$GIT_VERSION_STR\"" > version.i.tmp; \ if ! $(GREP) -- "-dirty" version.i.tmp > /dev/null && \ test "x$$GIT_CURRENT_TAG" != "x"; then \ - echo "#define GIT_VERSION \"\"" > version.i.tmp; \ + echo "#define BT_VERSION_GIT \"\"" > version.i.tmp; \ fi; \ fi; \ if test ! -f version.i.tmp; then \ - if test ! -f version.i; then \ - echo '#define GIT_VERSION ""' > version.i; \ + if test -f version.i; then \ + $(GREP) "^#define \bBT_VERSION_GIT\b.*" version.i > version.i.tmp; \ + else \ + echo '#define BT_VERSION_GIT ""' > version.i.tmp; \ fi; \ - elif test ! -f version.i || \ + fi; \ + echo "#define BT_VERSION_EXTRA_NAME \"`$(SED) -n '1p' "$(top_srcdir)/version/extra_version_name" 2> /dev/null`\"" >> version.i.tmp; \ + echo "#define BT_VERSION_EXTRA_DESCRIPTION \"`$(SED) -E ':a ; N ; $$!ba ; s/[^a-zA-Z0-9 \n\t\.,]/-/g ; s/\r{0,1}\n/\\\n/g' "$(top_srcdir)/version/extra_version_description" 2> /dev/null`\"" >> version.i.tmp; \ + echo "#define BT_VERSION_EXTRA_PATCHES \"`ls --ignore='README.adoc' -1 "$(top_srcdir)/version/extra_patches" | $(SED) -E ':a ; N ; $$!ba ; s/[^a-zA-Z0-9 \n\t\.]/-/g ; s/\r{0,1}\n/\\\n/g' 2> /dev/null`\"" >> version.i.tmp; \ + if test ! -f version.i || \ test x"`cat version.i.tmp`" != x"`cat version.i`"; then \ mv version.i.tmp version.i; \ fi; \ @@ -88,3 +115,5 @@ CLEANFILES = version.i.tmp ## clean when it's part of a dist tarball. ## DISTCLEANFILES = version.i + +noinst_HEADERS += version.h version.i