Re: source code reorg makefiles
On 05/11/2009 06:08 AM, Robert Collins wrote: I have one small request vis-a-vis the source code reorg. Please don't undo the non-recursive make support. I put a lot of effort into getting it where it was up to (even though that wasn't propogated across the entire code base). It makes a substantial difference to correctness, performance and ease of use of incremental builds. Where the goal is to split out a Makefile, I suggest the use of an include to incorporate smaller files. I can see a number of regressions in this to-date, which is why I'm asking that we not let it slide anymore. I am not against non-recursive Makefiles as such, but I do not think it is accurate to characterize the mess the SourceLayout project inherited as a non-recursive or recursive design. It is just a mess with no sense of direction or style. Whatever effort was spent in moving towards one design goal is not really visible behind the problems that remained and/or were added on top. Moving towards recursive make was easier for me because the concept is better understood, better documented, and is arguably simpler to implement (dependency loops aside). We can reverse the direction now if that's the consensus. Here is the good news: Regardless of the non/recursive decision, most of the SourceLayout changes are valid and useful. They properly organize the sources files. If we decide that non-recursive make is the goal, it would be much easier to convert to that style now (or later). Do all modern environments have good support for large non-recursive projects? Can somebody provide an example of a large project using non-recursive Makefiles? Or is that just a nice idea that never really took flight and is not being optimized/designed for? Thank you, Alex.
Re: source code reorg makefiles
On Wed, 2009-05-27 at 16:31 -0600, Alex Rousskov wrote: Here is the good news: Regardless of the non/recursive decision, most of the SourceLayout changes are valid and useful. They properly organize the sources files. If we decide that non-recursive make is the goal, it would be much easier to convert to that style now (or later). Great. Do all modern environments have good support for large non-recursive projects? Can somebody provide an example of a large project using non-recursive Makefiles? Or is that just a nice idea that never really took flight and is not being optimized/designed for? Without going out and doing an audit of other projects, I can't state specifics about where nonrecursive make is/isn't used. The autotools toolchain, which we are using, has tolerably good support for non-recursive make, and it is improving over time. I suspect that most large projects don't use non-recursive make, simply because they have generally been created some time ago before toolchain support existed at all. I do know that CMake, SCons, WAFfle, bake, cook, and other such toolchains all use a global-dependency-graph approach (which is the same as non-recursive make). -Rob signature.asc Description: This is a digitally signed message part
Re: source code reorg makefiles
On 05/27/2009 05:45 PM, Robert Collins wrote: On Wed, 2009-05-27 at 16:31 -0600, Alex Rousskov wrote: Do all modern environments have good support for large non-recursive projects? Can somebody provide an example of a large project using non-recursive Makefiles? Or is that just a nice idea that never really took flight and is not being optimized/designed for? Without going out and doing an audit of other projects, I can't state specifics about where nonrecursive make is/isn't used. The autotools toolchain, which we are using, has tolerably good support for non-recursive make, and it is improving over time. I suspect that most large projects don't use non-recursive make, simply because they have generally been created some time ago before toolchain support existed at all. I do know that CMake, SCons, WAFfle, bake, cook, and other such toolchains all use a global-dependency-graph approach (which is the same as non-recursive make). This does not sound very encouraging. It is obviously not your fault that there are no *well-known* examples of large projects using non-recursive makes. However, your remarks seem to imply that as long as we are using autotools, migrating to non-recursive makes will force us to use less popular parts of the toolchain (to put it mildly). Given Squid size, we may end up on the cutting edge of autotools use in that context. This sounds like a recipe for serious autotools pains. Do you think I am being too pessimistic? If not, are those autotools pains worth the advantages offered by non-recursive Makefiles? Thank you, Alex.
source code reorg makefiles
I have one small request vis-a-vis the source code reorg. Please don't undo the non-recursive make support. I put a lot of effort into getting it where it was up to (even though that wasn't propogated across the entire code base). It makes a substantial difference to correctness, performance and ease of use of incremental builds. Where the goal is to split out a Makefile, I suggest the use of an include to incorporate smaller files. I can see a number of regressions in this to-date, which is why I'm asking that we not let it slide anymore. -Rob signature.asc Description: This is a digitally signed message part
Re: source code reorg makefiles
Robert Collins wrote: I have one small request vis-a-vis the source code reorg. Please don't undo the non-recursive make support. I put a lot of effort into getting it where it was up to (even though that wasn't propogated across the entire code base). It makes a substantial difference to correctness, performance and ease of use of incremental builds. Do you mean the DiskIO/* and fs/*/* stuff? Where the goal is to split out a Makefile, I suggest the use of an include to incorporate smaller files. We are doing that.. (Common.am and TestHeaders.am etc) I can see a number of regressions in this to-date, which is why I'm asking that we not let it slide anymore. -Rob Can you explain a bit more detail please? what are you seeing us do wrong? we are not trying to remove anything at this point AFAIK. Amos -- Please be using Current Stable Squid 2.7.STABLE6 or 3.0.STABLE15 Current Beta Squid 3.1.0.7
Re: source code reorg makefiles
On Tue, 2009-05-12 at 01:48 +1200, Amos Jeffries wrote: Can you explain a bit more detail please? what are you seeing us do wrong? we are not trying to remove anything at this point AFAIK. acl is the one I noticed; but I had the others building non-recursively too. Non-recursive make is where make builds objects in directories without reinvoking make. Instead it holds a single build graph and can handle more complex dependencies safely. -Rob signature.asc Description: This is a digitally signed message part