🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: comp.unix.programmer
2 messages
2 total messages Started by * Tong * Wed, 21 Mar 2007 21:05
[GNU Make] Stem for phony target
#3713
Author: * Tong *
Date: Wed, 21 Mar 2007 21:05
40 lines
1934 bytes
Hi,

I have the following make file:

-------------------------------------------
all: something else

.PHONY: MakeAppleJuice MakeOrangeJuice MakeTomatoJuice

MakeAppleJuice:
	make_juice Apple.in.source  Apple.in.condition
				                    
MakeOrangeJuice:		                    
	make_juice Orange.in.source Orange.in.condition 
				                    
MakeTomatoJuice:		                    
	make_juice Tomato.in.source Tomato.in.condition 
-------------------------------------------

Is there anyway to combine the 3 rules into one? I hope there is, because
the 3 rules only different in what files they use and what juices then make
(but I still need the 3 phony targets). I tried the following but it didn't
work:

-------------------------------------------
Make%Juice: %.in.source 
	make_juice $*.in.source $*.in.condition 
-------------------------------------------

Please help.

thanks

-- 
Tong (remove underscore(s) to reply)
  http://xpt.sf.net/techdocs/
  http://xpt.sf.net/tools/

-- 
Posted via a free Usenet account from http://www.teranews.com
[GNU Make] Generic phony rules
#3714
Author: * Tong *
Date: Thu, 22 Mar 2007 14:50
114 lines
4270 bytes
My OP:

I have the following make file:

-------------------------------------------
all: something else

.PHONY: MakeAppleJuice MakeOrangeJuice MakeTomatoJuice

MakeAppleJuice:
	make_juice Apple.in.source  Apple.in.condition
				                    
MakeOrangeJuice:		                    
	make_juice Orange.in.source Orange.in.condition 
				                    
MakeTomatoJuice:		                    
	make_juice Tomato.in.source Tomato.in.condition 
-------------------------------------------

Is there anyway to combine the 3 rules into one? I hope there is, because
the 3 rules only different in what files they use and what juices then make
(but I still need the 3 phony targets). 

On Thu, 22 Mar 2007 12:47:15 +0000, * Tong * wrote:

> On Wed, 21 Mar 2007 23:33:30 -0500, Jean-Rene David wrote:
> 
>> If you want to get the effect of .PHONY, there's another
>> trick:
>> 
>> FORCE:
>> Make%Juice: %.in.source FORCE
>> 	make_juice $*.in.source $*.in.condition
> 
> Thanks for the reply. I still can't get it working:
> 
> $ cat Makefile 
> make_juice := echo
> 
> all: something else
> 
> .PHONY: MakeAppleJuice MakeOrangeJuice MakeTomatoJuice
> 
> FORCE:
> Make%Juice: %.in.source FORCE
>         make_juice $*.in.source $*.in.condition 
> 
> #MakeAppleJuice:
> 
> $ make MakeAppleJuice
> make: Nothing to be done for `MakeAppleJuice'.
> 
> If the last "MakeAppleJuice:" is uncommented, It still won't work. My make
> is:
> 
> $ make --version
> GNU Make 3.81
> 
>>> Which shouldn't be, because AppleJuice is a phony target.
>> 
>> Quite the opposite. In light of the above, if you remove the
>> target from the phonies, it works.
> 
> I don't quite understand this. You mean do a 'rm <target>' as the make rule? 
> 
> This is what I tried also:
> 
> $ rm -v Apple.in.*
> removed `Apple.in.condition'
> removed `Apple.in.source'
> 
> $ make MakeAppleJuice
> make: Nothing to be done for `MakeAppleJuice'.
> 
> I read quite a lot, but just can't apprehend enough to make it works.

I just tried "Empty Target Files" trick, 
http://www.gnu.org/software/autoconf/manual/make/Empty-Targets.html#Empty-Targets

-----------------------------------------------------------
$ cat Makefile 
make_juice := echo

all: something else

MakeJuice: $(wildcard *.in.source)
        $(make_juice) $? $(addsuffix .in.condition, $(patsubst %.in.source,%,$?))
        touch MakeJuice

$ make MakeJuice
echo Orange.in.source Tomato.in.source Orange.in.condition Tomato.in.condition
Orange.in.source Tomato.in.source Orange.in.condition Tomato.in.condition
touch MakeJuice

$ make MakeJuice
make: `MakeJuice' is up to date.
-----------------------------------------------------------

But that's different than my OP, because I need to deal with each juice
explicitly, and the command format is strictly 

 make_juice $*.in.source $*.in.condition 

So, is it possible to have such generic phony rule?

Thanks

-- 
Tong (remove underscore(s) to reply)
  http://xpt.sf.net/techdocs/
  http://xpt.sf.net/tools/

-- 
Posted via a free Usenet account from http://www.teranews.com
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads