generate version string from individual numbers
Thanks to @sorawee for pointing me to https://stackoverflow.com/a/5459929/718349
This commit is contained in:
parent
b219f92113
commit
d9c8ef964c
|
@ -1,25 +1,37 @@
|
|||
|
||||
(define-syntax (extract-version-string stx)
|
||||
(chez:call-with-input-file
|
||||
(#%call-with-input-file
|
||||
"../racket/src/schvers.h"
|
||||
(lambda (i)
|
||||
(let ([to-find "#define MZSCHEME_VERSION \""])
|
||||
(let loop ([pos 0])
|
||||
(let ([to-find "#define MZSCHEME_VERSION_"])
|
||||
(let numbers-loop ([numbers '()])
|
||||
(cond
|
||||
[(= pos (string-length to-find))
|
||||
(list->string
|
||||
(let loop ()
|
||||
(let ([ch (chez:read-char i)])
|
||||
(if (char=? ch #\")
|
||||
'()
|
||||
(cons ch (loop))))))]
|
||||
[(= 4 (length numbers))
|
||||
(cond
|
||||
[(not (zero? (car numbers)))
|
||||
(#%apply #%format "~a.~a.~a.~a" (reverse numbers))]
|
||||
[(not (zero? (cadr numbers)))
|
||||
(#%apply #%format "~a.~a.~a" (reverse (cdr numbers)))]
|
||||
[else
|
||||
(#%apply #%format "~a.~a" (reverse (cddr numbers)))])]
|
||||
[else
|
||||
(let ([ch (chez:read-char i)])
|
||||
(let loop ([pos 0])
|
||||
(cond
|
||||
[(char=? ch (string-ref to-find pos))
|
||||
(loop (add1 pos))]
|
||||
[(= pos (string-length to-find))
|
||||
(#%read-char i) ; discard "X", "Y", "Z", or "W"
|
||||
(#%read-char i) ; discard space
|
||||
(let digit-loop ([n 0])
|
||||
(let ([ch (#%read-char i)])
|
||||
(if (char-numeric? ch)
|
||||
(digit-loop (+ (* n 10) (- (char->integer ch) (char->integer #\0))))
|
||||
(numbers-loop (cons n numbers)))))]
|
||||
[else
|
||||
(loop 0)]))]))))))
|
||||
(let ([ch (#%read-char i)])
|
||||
(cond
|
||||
[(char=? ch (string-ref to-find pos))
|
||||
(loop (add1 pos))]
|
||||
[else
|
||||
(loop 0)]))]))]))))))
|
||||
|
||||
(define (version) (extract-version-string))
|
||||
(define (banner) (string-append "Welcome to Racket v" (version) " [cs].\n"))
|
||||
|
|
|
@ -9,17 +9,27 @@
|
|||
{X+1}.0; Z>=900 means working towards X.{Y+1}, and X.Y.Z as an
|
||||
alpha release.
|
||||
|
||||
(The string and the separate X/Y/Z/W numbers must be updated
|
||||
consistently.)
|
||||
Note that the version number in the "base" package's "info.rkt"
|
||||
needs to be updated separately.
|
||||
*/
|
||||
|
||||
#define MZSCHEME_VERSION "7.3.0.4"
|
||||
|
||||
#define MZSCHEME_VERSION_X 7
|
||||
#define MZSCHEME_VERSION_Y 3
|
||||
#define MZSCHEME_VERSION_Z 0
|
||||
#define MZSCHEME_VERSION_W 4
|
||||
|
||||
/* A level of indirection makes `#` work as needed: */
|
||||
#define AS_a_STR_HELPER(x) #x
|
||||
#define AS_a_STR(x) AS_a_STR_HELPER(x)
|
||||
|
||||
#if MZSCHEME_VERSION_W != 0
|
||||
# define MZSCHEME_VERSION AS_a_STR(MZSCHEME_VERSION_X) "." AS_a_STR(MZSCHEME_VERSION_Y) "." AS_a_STR(MZSCHEME_VERSION_Z) "." AS_a_STR(MZSCHEME_VERSION_W)
|
||||
#elif MZSCHEME_VERSION_Z != 0
|
||||
# define MZSCHEME_VERSION AS_a_STR(MZSCHEME_VERSION_X) "." AS_a_STR(MZSCHEME_VERSION_Y) "." AS_a_STR(MZSCHEME_VERSION_Z)
|
||||
#else
|
||||
# define MZSCHEME_VERSION AS_a_STR(MZSCHEME_VERSION_X) "." AS_a_STR(MZSCHEME_VERSION_Y)
|
||||
#endif
|
||||
|
||||
#define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y)
|
||||
#define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)
|
||||
|
||||
|
|
|
@ -1,2 +1,13 @@
|
|||
|
||||
FWVERSION = $(shell grep ' MZSCHEME_VERSION ' $(mainsrcdir)/racket/src/schvers.h | cut -d '"' -f 2)
|
||||
FWVERSION_X = $(shell grep 'define MZSCHEME_VERSION_X ' $(mainsrcdir)/racket/src/schvers.h | cut -d ' ' -f 3)
|
||||
FWVERSION_Y = $(shell grep 'define MZSCHEME_VERSION_Y ' $(mainsrcdir)/racket/src/schvers.h | cut -d ' ' -f 3)
|
||||
FWVERSION_Z = $(shell grep 'define MZSCHEME_VERSION_Z ' $(mainsrcdir)/racket/src/schvers.h | cut -d ' ' -f 3)
|
||||
FWVERSION_W = $(shell grep 'define MZSCHEME_VERSION_W ' $(mainsrcdir)/racket/src/schvers.h | cut -d ' ' -f 3)
|
||||
|
||||
ifneq ($(FWVERSION_W),0)
|
||||
FWVERSION = $(FWVERSION_X).$(FWVERSION_Y).$(FWVERSION_Z).$(FWVERSION_W)
|
||||
else ifneq ($(FWVERSION_Z),0)
|
||||
FWVERSION = $(FWVERSION_X).$(FWVERSION_Y).$(FWVERSION_Z)
|
||||
else
|
||||
FWVERSION = $(FWVERSION_X).$(FWVERSION_Y)
|
||||
endif
|
||||
|
|
|
@ -85,12 +85,8 @@ CAPTION "MzCOM"
|
|||
FONT 8, "MS Sans Serif", 0, 0, 0x0
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "OK",IDOK,76,69,50,14,BS_CENTER
|
||||
CTEXT "MzCOM v"MZSCHEME_VERSION,mzIDC_STATIC,71,8,61,8
|
||||
CTEXT "Copyright (c) 2000-2018 PLT Design Inc.",mzIDC_STATIC,
|
||||
41,20,146,9
|
||||
CTEXT "Racket v"MZSCHEME_VERSION,mzIDC_STATIC,64,35,75,8
|
||||
CTEXT "Copyright (c) 1995-2018 PLT Design Inc.",mzIDC_STATIC,
|
||||
30,47,143,8
|
||||
CTEXT "MzCOM",mzIDC_STATIC,71,8,61,8
|
||||
CTEXT "Racket",mzIDC_STATIC,64,35,75,8
|
||||
ICON MZICON,mzIDC_STATIC,11,16,20,20
|
||||
END
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user