NetBSD-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
make variable modifier :?
I don't understand how to use the :? modifier in a make variable.
Examples are hard to come by and the manual is cryptic. It says:
:?true_string:false_string
If the variable (actually an expression; see below)
evaluates to true....
What means "true" here? It doesn't refer to empty/defined/undefined,
apparently.
Here's my Makefile and its output. Note how `:?' always evaluates its
argument as true if the variable is defined:
$ cat -n Makefile && make -n
1 FILES = foo bar
2 EMPTY =
3
4 all:
5 FILES = '$(FILES)'
6 FILES is $(FILES:?full:empty)
7 FILES:Mfoo is '$(FILES:Mfoo)'
8 FILES $(FILES:Mfoo:?includes:excludes) foo
9 FILES $(FILES:Mzzz:?includes:excludes) zzz
10 #
11 EMPTY = '$(EMPTY)'
12 EMPTY is $(EMPTY:?full:empty)
13 EMPTY:Mfoo is '$(EMPTY:Mfoo)'
14 EMPTY $(EMPTY:Mfoo:?includes:excludes) foo
15 EMPTY $(EMPTY:Mzzz:?includes:excludes) zzz
16 #
17 NODEF = '$(NODEF)'
18 NODEF is $(NODEF:?full:empty)
19 NODEF:Mfoo is '$(NODEF:Mfoo)'
20 NODEF $(NODEF:Mfoo:?includes:excludes) foo
21 NODEF $(NODEF:Mzzz:?includes:excludes) zzz
FILES = 'foo bar'
FILES is full
FILES:Mfoo is 'foo'
FILES includes foo
FILES includes zzz
EMPTY = ''
EMPTY is full
EMPTY:Mfoo is ''
EMPTY includes foo
EMPTY includes zzz
NODEF = ''
NODEF is empty
NODEF:Mfoo is ''
NODEF excludes foo
NODEF excludes zzz
My objective is to make line 9 DTRT.
Many thanks.
--jkl
Home |
Main Index |
Thread Index |
Old Index