On 05/10/2023 12:27, Bahman Movaqar wrote:
On Wed, 2023-10-04 at 10:55 -0400, Paul Smith wrote:
Sorry but I don't really understand the problem. Maybe you can explain
it more clearly: provide the shortest, simplest repro case and show
both what happened and what you expected to see, and explain why you
expected it.
Good idea. Please see this repository:
https://github.com/throw-away-repos/make-pattern-rules
That's not really right. What .PHONY means is that make will _always_
rebuild that target (if it is considered), regardless of whether or not
the file exists on the disk or whether it's out of date with respect to
its prerequisites.
I see where I misunderstood .PHONY.
It also means that implicit rules are not searched, for PHONY targets.
See:
https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html
I definitely needed to re-read this! That said, I'm still confused.
I'm thinking that my understanding of implicit rule search combined w/
.PHONY is not enough to explain the situation in the repository above.
Could be related to
https://www.gnu.org/software/make/manual/make.html#Remaking-Makefiles:
after reading in all makefiles make will consider each as a goal target, in the
order in which they were processed, and attempt to update it
So, in your case, make tries to update the 2 included makefiles
(mk/scenario1.mk and mk/scenario2.mk). As you provide pattern rules for
that, make will build:
1. foo1-by-scenario1 because mk/scenario1.mk depends on it
2. mk/scenario1.mk
3. foo2 because mk/scenario2.mk depends on it
4. mk/scenario2.mk
5. scenario1.first-scenario
6. sep
7. scenario2.second-scenario
The out is thus normal.
--
Renaud Pacalet
Télécom Paris
Campus SophiaTech
450 Route des Chappes, CS 50193
06904 Biot Sophia Antipolis cedex, FRANCE
Tel : +33 (0) 4 9300 8402
Web : http://www.telecom-paris.fr/