add infrastructure to record and report the version of libc.so

this is still experimental and subject to change. for git checkouts,
an attempt is made to record the exact revision to aid in bug reports
and debugging. no version information is recorded in the static libc.a
or binaries it's linked into.
diff --git a/Makefile b/Makefile
index 7ac58d4..69ab304 100644
--- a/Makefile
+++ b/Makefile
@@ -20,6 +20,7 @@
 OBJS = $(SRCS:.c=.o)
 LOBJS = $(OBJS:.o=.lo)
 GENH = include/bits/alltypes.h
+GENH_INT = src/internal/version.h
 IMPH = src/internal/stdio_impl.h src/internal/pthread_impl.h src/internal/libc.h
 
 LDFLAGS = 
@@ -64,7 +65,7 @@
 	rm -f $(LOBJS)
 	rm -f $(ALL_LIBS) lib/*.[ao] lib/*.so
 	rm -f $(ALL_TOOLS)
-	rm -f $(GENH) 
+	rm -f $(GENH) $(GENH_INT)
 	rm -f include/bits
 
 distclean: clean
@@ -79,6 +80,11 @@
 include/bits/alltypes.h: include/bits/alltypes.h.in include/alltypes.h.in tools/mkalltypes.sed
 	sed -f tools/mkalltypes.sed include/bits/alltypes.h.in include/alltypes.h.in > $@
 
+src/internal/version.h: $(wildcard VERSION .git .git/*)
+	printf '#define VERSION "%s"\n' "$$(sh tools/version.sh)" > $@
+
+src/internal/version.lo: src/internal/version.h
+
 src/ldso/dynlink.lo: arch/$(ARCH)/reloc.h
 
 crt/crt1.o crt/Scrt1.o: $(wildcard arch/$(ARCH)/crt_arch.h)