On 2013-10-08 14:08, Salter, Thomas A wrote:
Was there any thought given to using this GNU Make feature to get rid of 
significant tab characters, or is it not even possible in all the supported 
build environments?  Some of the legacy systems I deal with don't handle tab 
characters well.

From: http://www.gnu.org/software/make/manual/make.html#Special-Variables

.RECIPEPREFIX
The first character of the value of this variable is used as the character make 
assumes is introducing a recipe line. If the variable is empty (as it is by 
default) that character is the standard tab character. For example, this is a 
valid makefile:
           .RECIPEPREFIX = >
           all:
           > @echo Hello, world

The value of .RECIPEPREFIX can be changed multiple times; once set it stays in 
effect for all rules parsed until it is modified.

I was not aware of this feature. It is ... interesting. But a bit scary. :-)

It's definitely worth considering, although not in this patch.

My first impression is that, while the decision to use tab as a special character in makefile syntax was a particularly bad one, it is still the norm. And even though IDE/editor support is quite limited for Makefiles, they usually can succeed in determining recipes by the tabs and the preceding colon. Change that, and you'll lose editor support (unless the editors are intelligent enough to parse .RECIPEPREFIX; which is of course possible, but unlikely).

On the other hand, tab in rules are not a good idea, and a character like ">" would certainly make rules stand out more visibly.

Have you used a non-tab .RECIPEPREFIX in the real world, with good results?

/Magnus

Reply via email to