15 messages in com.perforce.jamming[jamming] INCLUDES bug?
FromSent OnAttachments
Steve Goodson22 Nov 2002 21:34 
davi...@rcn.com23 Nov 2002 12:03 
Matt Armstrong24 Nov 2002 15:35 
davi...@rcn.com24 Nov 2002 15:41 
Christopher Seiwald02 Dec 2002 09:11 
Vladimir Prus03 Dec 2002 03:34 
Arnt Gulbrandsen03 Dec 2002 04:06 
Vladimir Prus03 Dec 2002 04:29 
Vladimir Prus03 Dec 2002 04:49 
Arnt Gulbrandsen03 Dec 2002 06:26 
Vladimir Prus03 Dec 2002 09:56 
Christopher Seiwald03 Dec 2002 10:46 
Vladimir Prus03 Dec 2002 11:23 
davi...@rcn.com03 Dec 2002 11:53 
Christopher Seiwald10 Dec 2002 00:59 
Subject:[jamming] INCLUDES bug?
From:Vladimir Prus (gho@cs.msu.su)
Date:12/03/2002 03:34:53 AM
List:com.perforce.jamming

Christopher Seiwald wrote:

This INCLUDES problem is indeed a bug. It properly handles the relationship (as INCLUDES) during the dependency analysis, but treats the files as direct dependencies (like DEPENDS) during the actual build. So if an included file fails to build, it thinks it can't build the including file.

This is rarely a problem with normal source files including others, but still deserves to be fixed. I'm toying with two possible fixes, one that is a fairly light bandaide and another that is a deeper reworking of INCLUDES handling. If I'm happy with either of them, I'll put the attempt in my path in the public depot.

Christopher, I've a related issue.

Suppose that there are two generated files a.cpp and b.h, and a.cpp includes b.h. Naturally, I'd like b.h to be generated before a.cpp is compiled.

Jambase accomplised this using the "first" target:

DEPENDS all : first ... ; DEPENDS first : b.h ;

But this is not 100% satisfactory. If you add "-j" option to the command line, correct building order is not guaranteed, and this is indeed a problem for me.

An optimal solution would be to run 'headers' on generated targets *after* they are generated. This will not change fate of any target, only adjust build order. I even started to implementing this for Boost.Jam, but realized that separate handling of INCLUDES and DEPENDS is needed, as you say above.

Is there any appoximate date when you'll make the change?

- Volodya

P.S. In fact, while we can run 'headers' after file is generated, we can't easily avoid running 'headers' in make0 on files that would be generated. So, there will be two invocations. But since it's for generated cpp files only, it's not very important.