Skip to content

Pattern rules with multiple targets not shown #29

@dacodas

Description

@dacodas

Consider the following Makefile

all: hello.b hello.c

hello.a:
    touch $@

%.b %.c: %.a
    touch $*.b $*.c

Instead of properly connecting the two pattern rule targets, only one of
them is connected the in the dot output

wrong

should-be

I believe this is because the make -d output just says that the second
has "already been considered"

# make -rRBndC example
GNU Make 4.2.1
Built for x86_64-redhat-linux-gnu
Copyright (C) 1988-2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Reading makefiles...
Reading makefile 'Makefile'...
Updating makefiles....
 Considering target file 'Makefile'.
  Looking for an implicit rule for 'Makefile'.
  No implicit rule found for 'Makefile'.
  Finished prerequisites of target file 'Makefile'.
 No need to remake target 'Makefile'.
Updating goal targets....
Considering target file 'all'.
 File 'all' does not exist.
 Looking for an implicit rule for 'all'.
 No implicit rule found for 'all'.
  Considering target file 'hello.b'.
   Looking for an implicit rule for 'hello.b'.
   Trying pattern rule with stem 'hello'.
   Trying implicit prerequisite 'hello.a'.
   Found an implicit rule for 'hello.b'.
    Considering target file 'hello.a'.
     Finished prerequisites of target file 'hello.a'.
    Making 'hello.a' due to always-make flag.
    Must remake target 'hello.a'.
make[1]: Entering directory '/home/dacoda/projects/tea-dragon-society/src/third-party/makefile2graph/test/example'
touch hello.a
    Successfully remade target file 'hello.a'.
   Finished prerequisites of target file 'hello.b'.
   Prerequisite 'hello.a' is newer than target 'hello.b'.
  Must remake target 'hello.b'.
touch hello.b hello.c
  Successfully remade target file 'hello.b'.
  Considering target file 'hello.c'.
  File 'hello.c' was considered already.
 Finished prerequisites of target file 'all'.
Must remake target 'all'.
Successfully remade target file 'all'.
make[1]: Leaving directory '/home/dacoda/projects/tea-dragon-society/src/third-party/makefile2graph/test/example'

With a different flag, however, it seems possible to have make let us
know that it is building more than one file with a single recipe

# make -rRpBC example | grep -C5 'Also makes'
    touch $@

hello.b: hello.a
#  Implicit rule search has been done.
#  Implicit/static pattern stem: 'hello'
#  Also makes: hello.c
#  Last modified 2020-09-18 17:55:32.792450404
#  File has been updated.
#  Successfully updated.
# automatic
# @ := hello.b

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions