From: Masahiro Yamada
Sent: 04 June 2019 04:31
...
You could use: $(shell sh -c "command -v $(c)gcc") or maybe: $(shell command$${x:+} -v $(c)gcc)
How about this?
$(shell : ~; command -v $(c)gcc)
Overcomplicated ....
I've not looked at the list of 'special characters' in make, but I suspect any variable expansion is enough. Since ${x:+} always expands to the empty string (whether or not 'x' is defined) it can't have any unfortunate side effects.
Probably, my eyes are used to Makefile. ":" is a no-op command, and it is used everywhere in kernel Makefiles in the form of "@:'
It depends on people which solution seems simpler. So, this argument tends to end up with bikesheding.
I am fully aware of ':', it is a shell builtin that always return success. Usually used when you want the side-effects of substitutions without executing anything (eg : ${foo:=bar} ), to change the result of a sequence of shell commands or as a dummy (eg while :; do :; done; ) Very annoyingly bash parses !: as something other than 'not true'.
$(shell command$${x:+} -v $(c)gcc) will be marginally faster because it is less parsing.
David
- Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)