[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug #56301] Mandatory/Optional include files and pattern rule with mult
From: |
Masahiro Yamada |
Subject: |
[bug #56301] Mandatory/Optional include files and pattern rule with multi-targets |
Date: |
Fri, 10 May 2019 12:33:51 -0400 (EDT) |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/73.0.3683.86 Chrome/73.0.3683.86 Safari/537.36 |
URL:
<https://savannah.gnu.org/bugs/?56301>
Summary: Mandatory/Optional include files and pattern rule
with multi-targets
Project: make
Submitted by: masahiroy
Submitted on: Fri 10 May 2019 04:33:49 PM UTC
Severity: 3 - Normal
Item Group: None
Status: None
Privacy: Public
Assigned to: None
Open/Closed: Open
Discussion Lock: Any
Component Version: None
Operating System: None
Fixed Release: None
Triage Status: None
_______________________________________________________
Details:
I see a problem when
a pattern rule with multiple targets
are responsible for creating included files,
some of which are mandatory, and the
others are optional.
I attached two test cases.
Both of them include two files, inc_a.mk and inc_b.mk
The difference between the two is:
For Makefile1, inc_a.mk is optional, inc_b.mk is mandatory.
For Makefile2, inc_a.mk is mandatory, inc_b.mk is optional.
inc_a.mk and inc_b.mk are supposed to be
simultaneously created by a pattern rule
(but it always fails).
The behavior is completely different
between Makefile1 and Makefile2.
$ make -f Makefile1
Makefile1:1: starting
target in question: inc_b.mk
false
Makefile1:8: inc_b.mk: No such file or directory
make: *** [Makefile1;12: inc_b.mk] Error 1
Make was terminated immediately when
it failed to create inc_b.mk
$ make -f Makefile2
Makefile2:1: starting
target in question: inc_b.mk
false
make: Failed to remake makefile 'inc_a.mk'.
hello
This also failed to create included files,
and showed "Failed to remake" message,
but continued running, then executed the 'all' target.
I think the reason is the target in question
in the pattern rule is inc_b.mk, which is
an optional include file.
As far as I examined, the last included file
becomes the target in question of the pattern rule.
So, I see some sort of sense in this behavior.
However, Makefile2 failed to create the mandatory
include file, inc_a.mk, so Make cannot (should not)
continue parsing the Makefile.
One way to fix this is,
the target in question should be chosen
from mandatory include files over optional ones.
_______________________________________________________
File Attachments:
-------------------------------------------------------
Date: Fri 10 May 2019 04:33:49 PM UTC Name: Makefile1 Size: 163B By:
masahiroy
<http://savannah.gnu.org/bugs/download.php?file_id=46891>
-------------------------------------------------------
Date: Fri 10 May 2019 04:33:49 PM UTC Name: Makefile2 Size: 163B By:
masahiroy
<http://savannah.gnu.org/bugs/download.php?file_id=46892>
_______________________________________________________
Reply to this item at:
<https://savannah.gnu.org/bugs/?56301>
_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [bug #56301] Mandatory/Optional include files and pattern rule with multi-targets,
Masahiro Yamada <=