diff options
-rw-r--r-- | Makefile | 5 | ||||
-rw-r--r-- | colorize.c | 10 | ||||
-rwxr-xr-x | version.pl | 24 |
3 files changed, 36 insertions, 3 deletions
@@ -8,10 +8,11 @@ CC=gcc CFLAGS=-ansi -pedantic colorize: colorize.c - $(CC) $(CFLAGS) -o colorize colorize.c -DCFLAGS="$(CFLAGS)" + perl ./version.pl > version.h + $(CC) $(CFLAGS) -o colorize colorize.c -DCFLAGS="$(CFLAGS)" -DHAVE_VERSION check: perl ./test.pl clean: - [ -e colorize ] && rm colorize; exit 0 + rm -f colorize version.h @@ -403,6 +403,11 @@ print_help (void) static void print_version (void) { +#ifdef HAVE_VERSION +# include "version.h" +#else + const char *version = NULL; +#endif const char *c_flags; struct bytes_size bytes_size; bool debug; @@ -416,7 +421,10 @@ print_version (void) #else debug = false; #endif - printf ("%s v%s (compiled at %s, %s)\n", "colorize", VERSION, __DATE__, __TIME__); + if (version) + printf ("colorize %s (compiled at %s, %s)\n", version, __DATE__, __TIME__); + else + printf ("colorize v%s (compiled at %s, %s)\n", VERSION, __DATE__, __TIME__); printf ("Compiler flags: %s\n", c_flags); if (get_bytes_size (BUF_SIZE, &bytes_size)) { diff --git a/version.pl b/version.pl new file mode 100755 index 0000000..850902e --- /dev/null +++ b/version.pl @@ -0,0 +1,24 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +my $version = ''; + +# git repository +if (system('which git >/dev/null 2>&1') == 0 +and system('git ls-files colorize.c --error-unmatch >/dev/null 2>&1') == 0) { + $version = `git describe --tags --dirty`; + $version =~ s/\n$//g; +} + +if (length $version) { + print <<"EOT"; +const char *version = "$version"; +EOT +} +else { + print <<'EOT'; +const char *version = NULL; +EOT +} |