I think this method is really sensible on the execution order of the makefile. Maybe it should be put at the top level.
On 2013-03-14 13:04, David Goulet wrote: > Oh wait it did create the version.h with the GIT_VERSION but I had to > compile again so this header file could be used in the code. > > David > > David Goulet: >> Hey Raphaël, >> >> This does not seems to work... I've applied your patch and recompile my >> git tree but version are still showing "2.1.0" ... ? >> >> Another thing, we really do prefer having #ifdef statement in one call >> site per binaries this means that you might want to use like >> "lttng-sessiond.h", put the ifdef there and do an inline function to >> print the correct version. >> >> Last thing, don't use spaces please! You can use extras/checkpatch.pl to >> make sure you are ok with the std we have. >> >> Thanks! >> David >> >> Raphaël Beamonte: >>> Signed-off-by: Raphaël Beamonte <[email protected]> >>> --- >>> include/Makefile.am | 20 +++++++++++++++++++- >>> include/lttng/version.h | 25 +++++++++++++++++++++++++ >>> src/bin/lttng-sessiond/main.c | 5 +++++ >>> src/bin/lttng/commands/version.c | 4 ++++ >>> src/bin/lttng/lttng.c | 7 ++++++- >>> 5 files changed, 59 insertions(+), 2 deletions(-) >>> create mode 100644 include/lttng/version.h >>> >>> diff --git a/include/Makefile.am b/include/Makefile.am >>> index 0bcb6f9..6664813 100644 >>> --- a/include/Makefile.am >>> +++ b/include/Makefile.am >>> @@ -1 +1,19 @@ >>> -lttnginclude_HEADERS = lttng/lttng.h lttng/lttng-error.h >>> +all-local: >>> + (git_version=$$(git describe --long --all 2>/dev/null); \ >>> + version_h=$(top_builddir)/include/lttng/version.h; \ >>> + if [ -z "$${git_version}" ]; then \ >>> + if [ $$(grep -c "^#define GIT_VERSION" "$${version_h}") -gt 0 >>> ]; then \ >>> + sed -i "/^#define GIT_VERSION/d" "$${version_h}"; \ >>> + fi; \ >>> + else \ >>> + if [ $$(grep -cE "^#define GIT_VERSION \"?$${git_version}\"?$$" >>> "$${version_h}") -eq 0 ]; then \ >>> + if [ $$(grep -c "^#define GIT_VERSION" "$${version_h}") >>> -gt 0 ]; then \ >>> + sed -i "s'^#define GIT_VERSION.*$$'#define >>> GIT_VERSION \"$${git_version}\"'" "$${version_h}"; \ >>> + else \ >>> + sed -i "s'^\(#define >>> VERSION_H.*\)$$'\1\n\n#define GIT_VERSION \"$${git_version}\"'" >>> "$${version_h}"; \ >>> + fi; \ >>> + fi; \ >>> + fi) >>> + >>> + >>> +lttnginclude_HEADERS = lttng/lttng.h lttng/lttng-error.h lttng/version.h >>> diff --git a/include/lttng/version.h b/include/lttng/version.h >>> new file mode 100644 >>> index 0000000..42a509d >>> --- /dev/null >>> +++ b/include/lttng/version.h >>> @@ -0,0 +1,25 @@ >>> +/* >>> + * version.h >>> + * >>> + * Linux Trace Toolkit version header file >>> + * >>> + * Copyright (C) 2013 - Raphaël Beamonte <[email protected]> >>> + * >>> + * This library is free software; you can redistribute it and/or modify it >>> + * under the terms of the GNU Lesser General Public License, version 2.1 >>> only, >>> + * as published by the Free Software Foundation. >>> + * >>> + * This library is distributed in the hope that it will be useful, but >>> WITHOUT >>> + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or >>> + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public >>> License >>> + * for more details. >>> + * >>> + * You should have received a copy of the GNU Lesser General Public License >>> + * along with this library; if not, write to the Free Software Foundation, >>> + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA >>> + */ >>> + >>> +#ifndef VERSION_H >>> +#define VERSION_H >>> + >>> +#endif /* VERSION_H */ >>> diff --git a/src/bin/lttng-sessiond/main.c b/src/bin/lttng-sessiond/main.c >>> index f7bb53e..f0d5895 100644 >>> --- a/src/bin/lttng-sessiond/main.c >>> +++ b/src/bin/lttng-sessiond/main.c >>> @@ -35,6 +35,7 @@ >>> #include <urcu/uatomic.h> >>> #include <unistd.h> >>> #include <config.h> >>> +#include <lttng/version.h> >>> >>> #include <common/common.h> >>> #include <common/compat/socket.h> >>> @@ -3547,7 +3548,11 @@ static int parse_args(int argc, char **argv) >>> usage(); >>> exit(EXIT_FAILURE); >>> case 'V': >>> +#ifdef GIT_VERSION >>> + fprintf(stdout, "%s (Git: %s)\n", VERSION, GIT_VERSION); >>> +#else /* GIT_VERSION */ >>> fprintf(stdout, "%s\n", VERSION); >>> +#endif /* GIT_VERSION */ >>> exit(EXIT_SUCCESS); >>> case 'S': >>> opt_sig_parent = 1; >>> diff --git a/src/bin/lttng/commands/version.c >>> b/src/bin/lttng/commands/version.c >>> index 7f69de3..c6e9e10 100644 >>> --- a/src/bin/lttng/commands/version.c >>> +++ b/src/bin/lttng/commands/version.c >>> @@ -24,6 +24,7 @@ >>> #include <sys/types.h> >>> #include <unistd.h> >>> #include <config.h> >>> +#include <lttng/version.h> >>> >>> #include "../command.h" >>> >>> @@ -79,6 +80,9 @@ int cmd_version(int argc, const char **argv) >>> } >>> >>> MSG("lttng version " VERSION " - " VERSION_NAME); >>> +#ifdef GIT_VERSION >>> + MSG("Git version: " GIT_VERSION); >>> +#endif >>> MSG("\n" VERSION_DESCRIPTION "\n"); >>> MSG("Web site: http://lttng.org"); >>> MSG("\nlttng is free software and under the GPL license and part LGPL"); >>> diff --git a/src/bin/lttng/lttng.c b/src/bin/lttng/lttng.c >>> index 8562144..e30a7c6 100644 >>> --- a/src/bin/lttng/lttng.c >>> +++ b/src/bin/lttng/lttng.c >>> @@ -25,6 +25,7 @@ >>> #include <sys/wait.h> >>> #include <unistd.h> >>> #include <config.h> >>> +#include <lttng/version.h> >>> #include <ctype.h> >>> >>> #include <lttng/lttng.h> >>> @@ -81,7 +82,11 @@ static struct cmd_struct commands[] = { >>> >>> static void usage(FILE *ofp) >>> { >>> - fprintf(ofp, "LTTng Trace Control " VERSION" - " VERSION_NAME"\n\n"); >>> + fprintf(ofp, "LTTng Trace Control " VERSION" - " VERSION_NAME"\n"); >>> +#ifdef GIT_VERSION >>> + fprintf(ofp, "Git version: " GIT_VERSION"\n"); >>> +#endif >>> + fprintf(ofp, "\n"); >>> fprintf(ofp, "usage: lttng [OPTIONS] <COMMAND> [<ARGS>]\n"); >>> fprintf(ofp, "\n"); >>> fprintf(ofp, "Options:\n"); >> _______________________________________________ >> lttng-dev mailing list >> [email protected] >> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev > _______________________________________________ > lttng-dev mailing list > [email protected] > http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev _______________________________________________ lttng-dev mailing list [email protected] http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
