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
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;
#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))
{
--- /dev/null
+#!/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
+}