Re: Non existing target not marked as new

2017-02-08 Thread Philip Guenther
On Wed, Feb 8, 2017 at 5:48 AM, Raz Manor  wrote:
> I created a makefile using instructions for this post:
> http://make.mad-scientist.net/papers/advanced-auto-dependency-generation/
>
> To test it, I make all my files, then deleted one .d file and touched one of
> the header files present in that .d file.
>
> The target, however, was not rebuilt.
>
>
>
> Running with -d, I found that the empty rule to make %.d files, ran the
> first time the %.d file was needed, in the -include directive.
>
> Than the target was marked as built by make, so the second time it was
> needed, when building the .o file, the empty recipe was not re-run.
>
> However, since the .d file still didn’t exist, the .o file was not rebuilt.
>
>
>
> The author of the article was assuming that if a target is marked as built,
> all the target it's their prerequisite will also be rebuilt, regardless of
> the actual state of the target.
>
> Was he mistaken?
>
> If so, is this a bug, or the intended behavior?
>
> I this is the intended behavior, how can I achieve the same affect?

I started to try to guess at the problem, but that's a waste of time
when you could just copy your test Makefile in to email to the list.


Philip Guenther

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


Re: Non existing target not marked as new

2017-02-08 Thread Paul Smith
On Wed, 2017-02-08 at 13:48 +, Raz Manor wrote:
> I created a makefile using instructions for this post: http://make.mad
> -scientist.net/papers/advanced-auto-dependency-generation/
> To test it, I make all my files, then deleted one .d file and touched
> one of the header files present in that .d file.
> The target, however, was not rebuilt.
>  
> Running with -d, I found that the empty rule to make %.d files, ran
> the first time the %.d file was needed, in the -include directive.
> Than the target was marked as built by make, so the second time it was
> needed, when building the .o file, the empty recipe was not re-run.
> However, since the .d file still didn’t exist, the .o file was not
> rebuilt.

I'm not able to understand from this description what exactly you are
seeing.  Maybe you can provide a small reproducible example.

When I tried a simple example and deleted any .d file, without even
touching any header file, the object file is rebuilt (which also
rebuilds the .d file as a side-effect).  This is the intended behavior:
since the .d file is missing we can't know what the dependencies are and
we have to assume the object file must be rebuilt.

One thing that maybe should be made more clear and obvious in that page
is the need to set the SRCS variable.  At the very end of the sample
makefile you'll see the line:

  -include $(patsubst %,$(DEPDIR)/%.d,$(basename $(SRCS)))

This line requires that the make variable SRCS be set to the list of
source files, otherwise nothing will work.  Since that's down at the end
of the makefile if you don't read carefully the rest of that section:

> Also, this assumes the SRCS variable contains all the source files
> (not header files) you want to track dependencies for.

then you might miss it.

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


Non existing target not marked as new

2017-02-08 Thread Raz Manor
Hello,
I created a makefile using instructions for this post: 
http://make.mad-scientist.net/papers/advanced-auto-dependency-generation/
To test it, I make all my files, then deleted one .d file and touched one of 
the header files present in that .d file.
The target, however, was not rebuilt.

Running with -d, I found that the empty rule to make %.d files, ran the first 
time the %.d file was needed, in the -include directive.
Than the target was marked as built by make, so the second time it was needed, 
when building the .o file, the empty recipe was not re-run.
However, since the .d file still didn't exist, the .o file was not rebuilt.

The author of the article was assuming that if a target is marked as built, all 
the target it's their prerequisite will also be rebuilt, regardless of the 
actual state of the target.
Was he mistaken?
If so, is this a bug, or the intended behavior?
I this is the intended behavior, how can I achieve the same affect?

Thanks,
Raz
___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


[bug #45763] Split args along MAX_ARG_STRLEN for linux/posix

2017-02-08 Thread Keshav Kini
Follow-up Comment #1, bug #45763 (project make):

I've rebased the patch to the latest git master as of this writing.

___

Reply to this item at:

  

___
  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


[bug #45763] Split args along MAX_ARG_STRLEN for linux/posix

2017-02-08 Thread Keshav Kini
Additional Item Attachment, bug #45763 (project make):

File name: 0001-Patch-to-fix-large-command-line.patch Size:3 KB


___

Reply to this item at:

  

___
  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