summaryrefslogtreecommitdiff
path: root/dmake/tests/function_macros-1
blob: 6e5368005a638180d76b6f4a3e19d90f7475a7eb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/bin/sh

# 01.06.2005 Volker Quetschke
# Tests for dmake function macros. (issue 36027, issue 37053)

: ${DMAKEPROG:=dmake}
file1="mymakefile.mk"
tmpfiles="$file1"

trap '{ echo "trapped signal - removing temporary files" ; rm -rf $tmpfiles ; }' 1 2 3 15

trap 'rm -rf $tmpfiles' 1 2 3 15 

# Remember to quote variables in generated makefiles( $ -> \$ ).
cat > $file1 <<EOT
# Testing function macros
SHELL*:=/bin/sh 
SHELLFLAGS*:=-ce

TEST1:=a b c

all:
	@echo \$\$(and ...) section
	test "::" = ":\$(and  \$(nil) \$(nil)  ):"
	test ":t:" = ":\$(and  a b  ):"
	test "::" = ":\$(and  \$(nil) \
 \$(nil)  ):"
	test "::" = ":\$(and   \
   ):"

	@echo -e \n\$\$(assign ...) section
	test ":A:" =  ":\$(assign A := B ):"
	test "\$(A)" = "B"
	test ":A:" = ":\$(assign A\
 := C ):"
	test "\$(A)" = "C"

	@echo -e \n\$\$(echo ...) section
	test ":123:" = ":\$(echo 123    ):"
	test ":123:" = ":\$(echo  123    ):"
	test ":123:" = ":\$(echo\
 123    ):"
	test ":123:" = ":\$(echo     \
 123    ):"

	@echo -e \n\$\$(eq ...) section
	test ":true:" = ":\$(eq,1,1 true false):"
	test ":true:" = ":\$(eq,1,1\
 true false):"

#       These tests need to use a shell
	+@echo -e '\n\$\$(foreach ...) section'
	+test ":[a] [b] [c]:" = ":\$(foreach,i,\$(TEST1) [\$i]):"
	+test ":[a] [b] [c]:" = ":\$(foreach,i,\$(TEST1)     [\$i]):"
	+test ":[a] [b] [c]:" = ":\$(foreach,i,\$(TEST1) [\$i]  ):"
	+test ":[a] [b] [c]:" = ":\$(foreach,i,\$(TEST1) \
    [\$i]  ):"

	@echo -e \n\$\$(nil ...) section
	test "::" = ":\$(nil abc):"
#   Fails with syntax error
	test "::" = ":\$(nil \
          ):"

	@echo -e \n\$\$(not ...) section
	test "::" = ":\$(not abc):"
	test ":t:" = ":\$(not \$(NULL)):"
	test ":t:" = ":\$(not   ):"
	test ":t:" = ":\$(not  \
     ):"

	@echo -e \n\$\$(null ...) section
	test ":true:" = ":\$(null, true      false):"
	test ":false:" = ":\$(null,a true false):"
	test ":false:" = ":\$(null,a true false    ):"
	test ":false:" = ":\$(null,a \
     true false    ):"
	test ":true:" = ":\$(null, \
     true false    ):"

	@echo -e \n\$\$(or ...) section
	test "::" = ":\$(or  \$(nil) \$(nil)  ):"
	test ":t:" = ":\$(or  a \$(nil)  ):"
	test "::" = ":\$(or  \$(nil) \
 \$(nil)  ):"
	test "::" = ":\$(or   \
   ):"

EOT

${DMAKEPROG} -r -f $file1
result=$?

test $result -eq 0 && echo "Success - Cleaning up" && rm -f ${tmpfiles}
test $result -ne 0 && echo "Failure!"
exit $result