Fix: Use 'echo' in a portable way
[lttng-tools.git] / include / Makefile.am
index fd212f22f0be0a77a6b9076a9a55ea9662a320b0..b67d262bc7918b608c1003c063f737e9592490b9 100644 (file)
@@ -1,5 +1,84 @@
-lttnginclude_HEADERS = lttng/lttng.h lttng/lttng-kconsumer.h \
-                                          lttng/lttng-ustconsumer.h lttng/lttng-consumer.h
+if LTTNG_TOOLS_BUILD_GIT_SOURCE
+GIT_DESCRIBE_CMD = (cd $(top_srcdir); git describe)
+else
+GIT_DESCRIBE_CMD = /bin/true
+endif
 
-noinst_HEADERS = lttngerr.h lttng-kernel.h lttng-consumerd.h lttng-share.h \
-                                lttng-sessiond-comm.h lttng-kernel-ctl.h lttng-ht.h
+##
+## 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 $(ECHO_N) "Generating version.h... $(ECHO_C)"
+       @(version_h_tmpl="$(top_srcdir)/include/version.h.tmpl"; \
+       if [ -f "$${version_h_tmpl}" ]; then \
+               version_h="$(top_builddir)/include/version.h"; \
+               ##
+               ## Check whether we are in a git repo.
+               ##
+               git_describe="$$($(GIT_DESCRIBE_CMD) 2>/dev/null)"; \
+               if [ $$? -eq 0 ]; then \
+                       git_version="$${git_describe}"; \
+               else \
+                       git_version=""; \
+               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; \
+               echo $(ECHO_N) "git version: \"$${git_version}\"$(ECHO_C)"; \
+               ##
+               ## We verify that git_version 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.
+               ##
+               version_match='^#define GIT_VERSION.*'; \
+               old_version=$$($(GREP) "$${version_match}" "$${version_h}"); \
+               new_version="#define GIT_VERSION        \"$${git_version}\""; \
+               if [ x"$${old_version}" != x"$${new_version}" ]; then \
+                       $(SED) -i "s'$${version_match}'$${new_version}'" "$${version_h}"; \
+               else \
+                       echo $(ECHO_N) " (cached)$(ECHO_C)"; \
+               fi; \
+               echo $(ECHO_N) "... $(ECHO_C)"; \
+       fi)
+       @echo "$(ECHO_T)ok"
+
+##
+## version.h is defined as a .PHONY file even if it's a real file as
+## we want our routine to be ran for each build.
+##
+.PHONY: version.h
+
+nodist_noinst_HEADERS = \
+       version.h
+
+lttnginclude_HEADERS = \
+       lttng/health.h \
+       lttng/lttng.h \
+       lttng/constant.h \
+       lttng/channel.h \
+       lttng/domain.h \
+       lttng/event.h \
+       lttng/handle.h \
+       lttng/session.h \
+       lttng/lttng-error.h \
+       lttng/snapshot.h \
+       lttng/save.h \
+       lttng/load.h \
+       version.h.tmpl
+
+noinst_HEADERS = \
+       lttng/snapshot-internal.h \
+       lttng/health-internal.h \
+       lttng/save-internal.h \
+       lttng/load-internal.h
This page took 0.023722 seconds and 4 git commands to generate.