Update of bug #46596 (project make):

                  Status:                    None => Duplicate              
             Open/Closed:                    Open => Closed                 

    _______________________________________________________

Follow-up Comment #4:

You can simplify your example down to this:


all: a

a: b ; cp $< $@

b: c

c: ; touch b


In this makefile you're lying to make by telling it that running the final
recipe will create a target "c", but in reality it doesn't do that; it creates
a target "b".

Make knows of no way to create target "b" itself (because the rule for "b" has
no recipe).

I think this may be an example of bug #41273; when the "b" file already exists
on disk then the last modified time will be cached internally to make. 
Because there is no recipe to update the "b" target, make will never
invalidate the cached modified time for "b".  So, if the timestamp of "b" when
make starts up is older than "a", then "a" will not be rebuilt.  If the
timestamp of "b" when make starts up is newer than "a", then "a" will be
rebuilt.

    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?46596>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/


_______________________________________________
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make

Reply via email to