+##
+## The version.h file must be verified and generated or updated if the
+## git commit id (called git version here) changed since the last build
+## of lttng-tools.
+##
+version.h:
+ ##
+ ## We first create variables for the current git version and
+ ## the locations of the version.h and version.h.tmpl files
+ ##
+ @echo -n "Generating version.h ... "
+ @(version_h_tmpl="$(top_builddir)/include/version.h.tmpl"; \
+ if [ -f "$${version_h_tmpl}" ]; then \
+ version_h="$(top_builddir)/include/version.h"; \
+ ##
+ ## We check the git version format we will use depending on
+ ## whether or not we are in the master branch or on a tag
+ ##
+ git_branch="$$(git describe --all 2>/dev/null)"; \
+ if [ -z "$${git_branch}" ]; then \
+ git_version=""; \
+ else \
+ git_describe="$$(git describe)"; \
+ if [ "$${git_branch}" == "$${git_describe}" ] || \
+ [ "$${git_branch}" == "heads/master" ]; then \
+ git_version="$${git_describe}"; \
+ else \
+ git_version="$$(git describe --long --all)"; \
+ fi; \
+ fi; \
+ ##
+ ## If the version.h file doesn't exist or is not up to date,
+ ## We replace it by the version.h.tmpl file
+ ##
+ if [ ! -e "$${version_h}" ] || \
+ [ "$${version_h_tmpl}" -nt "$${version_h}" ]; then \
+ cp "$${version_h_tmpl}" "$${version_h}"; \
+ fi; \
+ if [ -n "$${git_version}" ]; then \
+ ##
+ ## We remove the leading "v" for the version number
+ ##
+ git_version="$$(echo "$${git_version}" | sed -r "s/^v([0-9])/\1/")"; \
+ ##
+ ## If we have a git version, we verify that it isn't the same
+ ## as the one currently in the file (if there is one), as we
+ ## don't want to update the file if it is already up to date
+ ##
+ if [ $$(grep -cE "^#define GIT_VERSION \"?$${git_version}\"?$$" "$${version_h}") -eq 0 ]; then \
+ if [ $$(grep -c "^#define GIT_VERSION" "$${version_h}") -gt 0 ]; then \
+ ##
+ ## If there is already a GIT_VERSION defined,
+ ## we just replace it by the new version
+ ##
+ sed -i "s'^#define GIT_VERSION.*$$'#define GIT_VERSION \"$${git_version}\"'" "$${version_h}"; \
+ else \
+ ##
+ ## Else, we add a GIT_VERSION define
+ ## containing our new version.
+ ##
+ sed -i "s'^\(#define VERSION_H.*\)$$'\1\n\n#define GIT_VERSION \"$${git_version}\"'" "$${version_h}"; \
+ fi; \
+ fi; \
+ fi; \
+ fi)
+ @echo "ok"
+
+##
+## version.h is defined as a .PHONY file even if it's a real file as
+## we want our routine to be runned for each build.
+##
+.PHONY: version.h
+
lttnginclude_HEADERS = \
lttng/health.h \
lttng/lttng.h \
lttng/lttng-error.h \
lttng/snapshot.h \
- lttng/save.h
+ lttng/save.h \
+ version.h
noinst_HEADERS = \
lttng/snapshot-internal.h \
--- /dev/null
+/*
+ * Copyright (C) 2013-2014 - Raphaël Beamonte <raphael.beamonte@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2 only,
+ * as published by the Free Software Foundation.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include <config.h>
+
+#ifndef VERSION_H
+#define VERSION_H
+
+#define GIT_VERSION
+
+/*
+ * Define the macro containing the FULL version
+ */
+#ifdef GIT_VERSION
+#define FULL_VERSION "" GIT_VERSION
+#else /* GIT_VERSION */
+#define FULL_VERSION "v" VERSION
+#endif /* GIT_VERSION */
+
+#endif /* VERSION_H */
static void usage(FILE *ofp)
{
- fprintf(ofp, "LTTng Trace Control " VERSION" - " VERSION_NAME"\n\n");
+ fprintf(ofp, "LTTng Trace Control " FULL_VERSION" - " VERSION_NAME"\n\n");
fprintf(ofp, "usage: lttng [OPTIONS] <COMMAND> [<ARGS>]\n");
fprintf(ofp, "\n");
fprintf(ofp, "Options:\n");
static void version(FILE *ofp)
{
- fprintf(ofp, "%s (LTTng Trace Control) " VERSION" - " VERSION_NAME"\n",
+ fprintf(ofp, "%s (LTTng Trace Control) " FULL_VERSION" - " VERSION_NAME"\n",
progname);
}