aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.scm31
1 files changed, 29 insertions, 2 deletions
diff --git a/configure.scm b/configure.scm
index 07a822a..9c519fc 100644
--- a/configure.scm
+++ b/configure.scm
@@ -17,9 +17,24 @@
;;; License along with kolam. If not, see
;;; <http://www.gnu.org/licenses/>.
-(use-modules (srfi srfi-28)
+(use-modules (rnrs io ports)
+ (srfi srfi-26)
+ (srfi srfi-28)
(srfi srfi-37)
- (ice-9 match))
+ (ice-9 match)
+ (ice-9 popen))
+
+(define (call-with-input-pipe command proc)
+ "Call PROC with input pipe to COMMAND. COMMAND is a list of program
+arguments."
+ (match command
+ ((prog args ...)
+ (let ((port #f))
+ (dynamic-wind
+ (lambda ()
+ (set! port (apply open-pipe* OPEN_READ prog args)))
+ (cut proc port)
+ (cut close-pipe port))))))
(define (check-for-guile-3.0)
(display "checking for guile 3.0... ")
@@ -75,6 +90,16 @@
(libdir . ,libdir)
(datarootdir . ,datarootdir))))))
+(define version
+ (call-with-input-pipe (list "git" "tag" "--sort=-taggerdate"
+ "--list" "v*")
+ (lambda (port)
+ (let ((line (get-line port)))
+ (if (eof-object? line)
+ ;; If there are no tags, assume first version.
+ "0.1.0"
+ (substring line (string-length "v")))))))
+
(check-for-guile-3.0)
(check-for-module '(json))
@@ -83,11 +108,13 @@
(display (format "# This file was automatically generated by configure.
project = ~a
+version = ~a
libdir = ~a
datarootdir = ~a
guile_effective_version = ~a
"
(assq-ref processed-args 'project)
+ version
(assq-ref processed-args 'libdir)
(assq-ref processed-args 'datarootdir)
(effective-version))