mirror of
https://github.com/mirror/make.git
synced 2025-01-10 12:20:18 +08:00
82 lines
1.9 KiB
Plaintext
82 lines
1.9 KiB
Plaintext
|
# -*-perl-*-
|
||
|
|
||
|
$description = 'Test the $(guile ...) function.';
|
||
|
|
||
|
$details = 'This only works on systems that support it.';
|
||
|
|
||
|
# If this instance of make doesn't support GNU Guile, skip it
|
||
|
exists $FEATURES{guile} or return -1;
|
||
|
|
||
|
# Verify simple data type conversions
|
||
|
# Currently we don't support vectors:
|
||
|
# echo '$(guile (vector 1 2 3))'; \
|
||
|
run_make_test(q!
|
||
|
x:;@echo '$(guile #f)'; \
|
||
|
echo '$(guile #t)'; \
|
||
|
echo '$(guile #\c)'; \
|
||
|
echo '$(guile 1234)'; \
|
||
|
echo '$(guile 'foo)'; \
|
||
|
echo '$(guile "bar")'; \
|
||
|
echo '$(guile (cons 'a 'b))'; \
|
||
|
echo '$(guile '(a b (c . d) 1 (2) 3))'
|
||
|
!,
|
||
|
'', "\n#t\nc\n1234\nfoo\nbar\na b\na b c d 1 2 3");
|
||
|
|
||
|
# Verify the gmk-expand function
|
||
|
run_make_test(q!
|
||
|
VAR = $(guile (gmk-expand "$(shell echo hi)"))
|
||
|
x:;@echo '$(VAR)'
|
||
|
!,
|
||
|
'', "hi");
|
||
|
|
||
|
# Verify the gmk-eval function
|
||
|
run_make_test(q!
|
||
|
$(guile (gmk-eval "VAR = hi $(shell echo there)"))
|
||
|
x:;@echo '$(VAR)'
|
||
|
!,
|
||
|
'', "hi there");
|
||
|
|
||
|
# Verify the gmk-eval function with a list
|
||
|
run_make_test(q!
|
||
|
$(guile (gmk-eval '(VAR = 1 (2) () 3)))
|
||
|
x:;@echo '$(VAR)'
|
||
|
!,
|
||
|
'', "1 2 3");
|
||
|
|
||
|
# Verify the gmk-var function
|
||
|
run_make_test(q!
|
||
|
VALUE = hi $(shell echo there)
|
||
|
VAR = $(guile (gmk-var "VALUE"))
|
||
|
x:;@echo '$(VAR)'
|
||
|
!,
|
||
|
'', "hi there");
|
||
|
|
||
|
# Verify the gmk-var function with a symbol
|
||
|
run_make_test(q!
|
||
|
VALUE = hi $(shell echo there)
|
||
|
VAR = $(guile (gmk-var 'VALUE))
|
||
|
x:;@echo '$(VAR)'
|
||
|
!,
|
||
|
'', "hi there");
|
||
|
|
||
|
# Write a Guile program using define and run it
|
||
|
run_make_test(q!
|
||
|
# Define the "fib" function in Guile
|
||
|
define fib
|
||
|
;; A procedure for counting the n:th Fibonacci number
|
||
|
;; See SICP, p. 37
|
||
|
(define (fib n)
|
||
|
(cond ((= n 0) 0)
|
||
|
((= n 1) 1)
|
||
|
(else (+ (fib (- n 1))
|
||
|
(fib (- n 2))))))
|
||
|
endef
|
||
|
$(guile $(fib))
|
||
|
|
||
|
# Now run it
|
||
|
x:;@echo $(guile (fib $(FIB)))
|
||
|
!,
|
||
|
'FIB=10', "55");
|
||
|
|
||
|
1;
|