Re: Idea: Standard way to negate special targets

2019-06-12 Thread Michael Livshin
On Wed, Jun 12, 2019 at 7:25 PM David A. Wheeler wrote: > > I would strongly prefer "!" just binding to the next target & documenting > that. > The first time someone sees they may wonder how far it binds, > but it's pretty obvious that there are multiple possibilities, > so they can look it up o

Re: Idea: Standard way to negate special targets

2019-06-12 Thread Paul Smith
On Wed, 2019-06-12 at 12:25 -0400, David A. Wheeler wrote: > In addition, there's no obvious way to generalize that to > prerequisites in general. > Being able to remove prerequisites seems like something that > should be rarely used, but very useful when it is needed. > In particular, that'd simpl

Re: Idea: Standard way to negate special targets

2019-06-12 Thread David A. Wheeler
On Wed, 12 Jun 2019 11:59:50 -0400, Paul Smith wrote: > There's already too much whitespace-awareness in make as is IMO :). :-). > That's why I suggested embedding the "!" in the target name but if > people don't like that, then we should just document that the "!" binds > to the next target and

Re: Idea: Standard way to negate special targets

2019-06-12 Thread Paul Smith
On Wed, 2019-06-12 at 10:15 -0400, David A. Wheeler wrote: > > What about modifying the target name itself, like: > > > >tricky_target: .!ONESHELL .PHONY ... > > I think modifying the target name itself is MUCH worse. > > I don't the problem is serious, but I *do* see your point. > > I thin

Re: Idea: Standard way to negate special targets

2019-06-12 Thread David A. Wheeler
On Wed, 12 Jun 2019 14:40:40 +0300, Michael Livshin wrote: > Or! > How about a general syntax for canceling prerequisites (not just for > special targets)? Say, "!:" (inspired by "&:")? > > Then you'd just say ".ONESHELL!: my-tricky-target". More verbose than > "my-tricky-target: ! .ONESHELL" o

Re: Idea: Standard way to negate special targets

2019-06-12 Thread Paul Smith
On Tue, 2019-06-11 at 16:25 -0400, David A. Wheeler wrote: > Add a syntax to *disable* a special target for > a particular rule. I propose that it be > a whitespace-surrounded "!" in the prerequisites > followed by the special target being disabled. E.g.: > > > .ONESHELL: > > tricky_target:

Re: Idea: Standard way to negate special targets

2019-06-12 Thread Michael Livshin
Or! How about a general syntax for canceling prerequisites (not just for special targets)? Say, "!:" (inspired by "&:")? Then you'd just say ".ONESHELL!: my-tricky-target". More verbose than "my-tricky-target: ! .ONESHELL" or whatever, but seems more robust to me (and more general, although I co

Re: Idea: Standard way to negate special targets

2019-06-12 Thread David A. Wheeler
David A. Wheeler (11 June 2019 22:25) wrote: >> I know of no other use for "!" in prerequisites. On June 12, 2019 4:42:15 AM EDT, Edward Welbourne wrote: >Well, it could be a file-name ;^> Fair enough, although I expect that to be extremely rare. That can be easily escaped as "./!". --- Davi

Re: Idea: Standard way to negate special targets

2019-06-12 Thread Edward Welbourne
David A. Wheeler (11 June 2019 22:25) wrote: > I know of no other use for "!" in prerequisites. Well, it could be a file-name ;^> For example, compare /usr/bin/[ A Unix could implement the shell's ! as an actual command. The make-file to build it would have ! as a target to build. The check rule t

Idea: Standard way to negate special targets

2019-06-11 Thread David A. Wheeler
Idea: Standard way to negate special targets Problem: Sometimes you want to set a default value using a special target, but in a few cases you want to *disable* the special target. For example, you might want to use: .ONESHELL: for *almost* all the rules, except for a few rules where you want