~ chicken-core (chicken-5) 50f521d1c81a143aebe4cd1a285af784dc475f4e
commit 50f521d1c81a143aebe4cd1a285af784dc475f4e
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Fri Jul 22 14:08:53 2011 +0200
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Fri Jul 22 14:08:53 2011 +0200
tiredly pounding
diff --git a/build-version.scm b/build-version.scm
index f79b4385..1e895897 100644
--- a/build-version.scm
+++ b/build-version.scm
@@ -27,6 +27,8 @@
(declare
(unit build-version))
+(foreign-declare "#include \"buildtag.h\"")
+
;; (read-version filename): Read line from FILENAME and return
;; as a string; return #f if non-existent file or blank line.
(define-syntax read-version
@@ -35,11 +37,11 @@
(let ((fn (cadr x)))
(and (file-exists? fn)
(let ((ver (with-input-from-file (cadr x) read-line)))
- (if (string=? ver "")
+ (if (or (eof-object? ver) (string=? ver ""))
#f
ver)))))))
-(define ##sys#build-version (read-version "buildversion"))
-(define ##sys#build-tag (read-version "buildtag"))
+(define (##sys#build-tag) (foreign-value "C_BUILD_TAG" c-string))
(define ##sys#build-id (read-version "buildid"))
(define ##sys#build-branch (read-version "buildbranch"))
+(define ##sys#build-version (read-version "buildversion"))
diff --git a/distribution/manifest b/distribution/manifest
index c10fd596..9e69eed3 100644
--- a/distribution/manifest
+++ b/distribution/manifest
@@ -45,6 +45,7 @@ tcp.c
utils.c
build.scm
buildversion
+buildbranch
c-backend.scm
c-platform.scm
chicken-ffi-syntax.scm
@@ -95,6 +96,9 @@ stub.scm
support.scm
tcp.scm
build-version.scm
+build-version.c
+buildid
+buildtag.h
tests/thread-list.scm
tests/gobble.scm
tests/test-optional.scm
diff --git a/identify.sh b/identify.sh
index cbf507b4..8ec08d5a 100644
--- a/identify.sh
+++ b/identify.sh
@@ -7,12 +7,12 @@
# make sure file exists anyway, since branchname is a special case
if test \! -e "buildbranch"; then
- echo >buildbranch
+ touch buildbranch
fi
rev0=`cat buildid || echo ""`
branchname0=`cat buildbranch || echo ""`
-tag0=`cat buildtag || echo ""`
+tag0=`cat buildtag.h || echo ""`
buildtime=`date +%Y-%m-%d`
host=`hostname`
usys=`uname`
@@ -20,7 +20,7 @@ usys=`uname`
if test -d "$1/.git"; then
rev=`GIT_DIR="$1/.git" git rev-parse --short HEAD 2>/dev/null`
branchname=`GIT_DIR="$1/.git" git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'`
- tag="compiled ${buildtime} on ${host} (${usys})"
+ tag="#define C_BUILD_TAG \"compiled ${buildtime} on ${host} (${usys})\""
case ${branchname} in
"") branchname="";;
@@ -33,6 +33,6 @@ if test -d "$1/.git"; then
echo ${branchname} >buildbranch
fi
if test "${tag0}" \!= "${tag}"; then
- echo ${tag} >buildtag
+ echo ${tag} >buildtag.h
fi
fi
diff --git a/library.scm b/library.scm
index d9d9f86d..4b5ff135 100644
--- a/library.scm
+++ b/library.scm
@@ -3547,7 +3547,7 @@ EOF
""
(string-append " [" spec " ]") )
"\n"
- (or ##sys#build-tag "")))
+ (or (##sys#build-tag) "")))
##sys#build-version) )
diff --git a/rules.make b/rules.make
index 614ca2b9..fc719023 100644
--- a/rules.make
+++ b/rules.make
@@ -464,10 +464,10 @@ endif
# build versioning
ifdef WINDOWS_SHELL
-.PHONY: buildtag buildbranch buildid
+.PHONY: buildbranch buildid
-buildtag:
- echo.$(BUILD_TAG)>buildtag
+buildtag.h:
+ echo #define C_BUILD_TAG "$(BUILD_TAG)" >$@
buildbranch:
echo.$(BRANCHNAME)>buildbranch
buildid:
@@ -478,7 +478,7 @@ else
identify-me:
@sh $(SRCDIR)identify.sh $(SRCDIR)
-buildtag: identify-me
+buildtag.h: identify-me
buildbranch: identify-me
buildid: identify-me
endif
@@ -548,7 +548,8 @@ profiler.c: $(SRCDIR)profiler.scm $(SRCDIR)common-declarations.scm
$(bootstrap-lib)
stub.c: $(SRCDIR)stub.scm $(SRCDIR)common-declarations.scm
$(bootstrap-lib)
-build-version.c: $(SRCDIR)build-version.scm buildtag buildbranch buildid $(SRCDIR)buildversion
+build-version.c: $(SRCDIR)build-version.scm buildbranch buildid \
+ $(SRCDIR)buildversion buildtag.h
$(bootstrap-lib)
define declare-bootstrap-import-lib
@@ -632,7 +633,7 @@ endif
confclean:
-$(REMOVE_COMMAND) $(REMOVE_COMMAND_OPTIONS) \
chicken-config.h chicken-defaults.h chicken-install.rc chicken-uninstall.rc \
- buildtag buildid buildbranch
+ buildtag.h buildid buildbranch
spotless: distclean testclean
-$(REMOVE_COMMAND) $(REMOVE_COMMAND_OPTIONS) $(DISTFILES)
Trap