summaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
authorChris Reuter <chris@blit.ca>2013-11-04 17:11:33 -0500
committerChris Reuter <chris@blit.ca>2013-11-07 19:44:45 -0500
commit4378b8ded4004249ad13e24873c47b0627a6a1bd (patch)
treee196944185c42e2f8c0f8bad246569bde4622306 /config
parent38845577002f0af0d538e78e0ff44de82d6e28f2 (diff)
downloadlibgd-4378b8ded4004249ad13e24873c47b0627a6a1bd.tar.gz
gd.h now holds the canonical version number.
Up to now, the version numbers were defined in configure.ac and put into gd.h by generating it from gd.h.in, replacing the values of several C macros. This violates the DRY principle, won't work on a dumb build system, confuses some dev tools and is just a huge headache in general. This change makes gd.h (no longer generated) the home of the version number and provides a script (config/getver.pl) which can extract the requested version components from the header file. configure.ac now gets the version number from gd.h instead of vice versa. In addition, there are now C functions that return the values of the version macros. This is for the benefit of non-C code using the library without access to the header file. It also provides a way to get the version number of the library currently linked rather than the header the program was compiled against. (This could change if the shared library is updated without recompiling the program using it.)
Diffstat (limited to 'config')
-rwxr-xr-xconfig/getver.pl29
1 files changed, 29 insertions, 0 deletions
diff --git a/config/getver.pl b/config/getver.pl
new file mode 100755
index 0000000..9118a5b
--- /dev/null
+++ b/config/getver.pl
@@ -0,0 +1,29 @@
+#!/usr/bin/env perl
+
+# Simple script to extract the version number parts from
+# src/version.h. This must be run in the project root. It is used by
+# configure.ac
+
+use strict;
+
+my $key = shift;
+
+open FH, "<src/gd.h" # old-style filehandle for max. portability
+ or die "Unable to open 'version.h' for reading.\n";
+
+while(<FH>) {
+ next unless m{version605b5d1778};
+ next unless /^#define\s+GD_([A-Z0-9]+)_VERSION+\s+(\S+)/;
+ my ($lk, $lv) = ($1, $2);
+ if ($lk eq $key) {
+ chomp $lv;
+ $lv =~ s/"//g;
+
+ print $lv; # no newline
+ exit(0); # success!
+ }
+}
+
+close(FH);
+
+exit(1); # failure