On Fri, 24 May 2013, Beno?t Minisini wrote: > Le 23/05/2013 14:23, Tobias Boege a ?crit : > >> > >> Sorry, I prefer my way of defining TRUNK_VERSION: you should not modify > >> the compilation flag for defining a constant. You'd rather use the > >> 'config.h' mechanism (AC_DEFINE & AC_DEFINE_UNQUOTED). > >> > > > > But when is this file regenerated? Only by configure, correct? This would > > mean that I have to issue a ./configure everytime I want the new correct > > version number from gbx3 which is less desirable, in my opinion, than > > changing a compiler flag. > > > > Regards, > > Tobi > > > > You get a point there. But you must find a way to get the svn version > only when it changes. For example, we can imagine adding a special > makefile rule that computes the svn version and put it in its custom > header file. This rule will depend on the modification time of the > /trunk/.svn directory (if it is possible). > > What do you think? >
Good idea. Actually I thought about that, too, but rejected it because a Makefile rule that depends on .svn will not work on non-repository sources, like: make: *** No rule to make target `.svn', needed by `all'. Stop. which is from a Makefile inside my home directory - not svn versioned. What I didn't think of was this workaround: have a .PHONY target that compares timestamps of .svn to the header's instead of letting make do it. We could catch the case that .svn doesn't exist: --- trunk_version.h: TRUNK_VERSION = $(shell LC_ALL=C svn info 2>/dev/null | grep Revision | egrep -wo "[0-9]+") trunk_version.h: @if test -d .svn -a .svn -nt trunk_version.h ; then \ echo -e "/* TRUNK version if available */\n#define TRUNK_VERSION\t$(TRUNK_VERSION)\n" >trunk_version.h; \ fi .PHONY: trunk_version.h --- This worked in my home directory, i.e. did nothing but without complaint, and in trunk/ it created the trunk_version.h. Maybe ".svn" above should be prefixed with the path to the top-level Gambas directory? The lines are quite ugly. I couldn't find out how to use a here-document in a Makefile. Alas, I don't have time today to make it better. Regards, Tobi ------------------------------------------------------------------------------ Try New Relic Now & We'll Send You this Cool Shirt New Relic is the only SaaS-based application performance monitoring service that delivers powerful full stack analytics. Optimize and monitor your browser, app, & servers with just a few lines of code. Try New Relic and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may _______________________________________________ Gambas-user mailing list Gambas-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user