20 years agoMatt Armstrong committed change 4632 into An OPT_SEMAPHORE feature stolen from Craig McPheeters. | ||
Add a comment | ||
21 years agoMatt Armstrong committed change 4338 into Now jam will read the default -j argument from the JAM_JOBS environment variable. | ||
21 years agoMatt Armstrong committed change 4337 into New -dM build flag to get make1.c debug logging. | ||
21 years agoMatt Armstrong committed change 4336 into Fix bug for strange make.c and RULE_UPDATED interaction. If you have a rule with flag RULE_UPDATED, then any dependents must have fate greater than... T_FATE_STABLE to be included. However, make.c can get confused for dependency trees like this: a --> b --> d \-> c --> d In this case, make.c can set the fate of "d" before it ever gets to "c". So you will end up with a T_FATE_MISSING target "c" with dependents with T_FATE_STABLE. If "c" happens to have a RULE_UPDATED action, RULE_UPDATED, make1list() will refrain from including it in the list of targets. We hack around this here by explicitly checking for this case and manually tweaking the dependents fate to at least T_FATE_NEWER. An alternate fix is to modify make1cmds() to take a TARGET* instead of an ACTIONS* and, when the target is T_FATE_MISSING, have it mask off the RULE_UPDATED flag when calling make1list(). « | ||
21 years agoMatt Armstrong committed change 4087 into Fix typo so the w32 reserved stack size actually is 5 megs. | ||
21 years agoMatt Armstrong committed change 4081 into | ||
21 years agoMatt Armstrong committed change 4080 into j -v will print whether the .exe is a debug version or not | ||
21 years agoMatt Armstrong committed change 4047 into 20% reduction in memory use. | ||
21 years agoMatt Armstrong committed change 4045 into patchlevel a.t - take the public perfoce depot's change 4044. Change 4044 by matt_armstrong@matt_armstrong-jrukman-jam on 2003/12/23 17:03:13 Fi...x //guest/matt_armstrong/jam/bug/3/... (as well as 2/... and 1/...). Introduce a pass *before* make0() that propagates INCLUDES relationships fully thruout the dependency graph. bug/3 was caused by make0 trying to do too much at once. You can't properly deal with cycles in the INCLUDES graph and correctly determine dependencies in one pass. We now have three passes through the dependency graph in make.c 1) make0bscan() - bind and scan all targets in the tree 2) make0includes() - gather all INCLUDES from sub-INCLUDES in a way that is safe from cycles in the INCLUDES graph. 3) make0() - fate determination TODO: verify correct bindtarget() use in make0bscan() and make0includes() Affected files ... ... //guest/matt_armstrong/jam/fix/2/make.c#7 edit ... //guest/matt_armstrong/jam/fix/2/rules.h#6 edit « | ||
21 years agoMatt Armstrong committed change 4044 into Fix //guest/matt_armstrong/jam/bug/3/... (as well as 2/... and 1/...). Introduce a pass *before* make0() that propagates INCLUDES relationships full...y thruout the dependency graph. bug/3 was caused by make0 trying to do too much at once. You can't properly deal with cycles in the INCLUDES graph and correctly determine dependencies in one pass. We now have three passes through the dependency graph in make.c 1) make0bscan() - bind and scan all targets in the tree 2) make0includes() - gather all INCLUDES from sub-INCLUDES in a way that is safe from cycles in the INCLUDES graph. 3) make0() - fate determination TODO: verify correct bindtarget() use in make0bscan() and make0includes() « | ||
21 years agoMatt Armstrong committed change 4018 into Take //guest/matt_armstrong/jam/fix/2/... changes (again). | ||
21 years agoMatt Armstrong committed change 4016 into Split make.c into two phases -- make0bscan() and make0(). make0bscan() does binding and header scanning, and make0() does fate determination. This... two pass approach completely isolates fate determination from header scanning, and so eliminates problems where circular INCLUDE dependencies caused the old make0() to incorrectly determine the fate of targets (see //guest/matt_armstrong/jam/bug/3/...). « | ||
21 years agoMatt Armstrong committed change 4015 into second thoughts... | ||
21 years agoMatt Armstrong committed change 4014 into initial branch from mainline | ||
21 years agoMatt Armstrong committed change 4011 into Script to test against the bug (requires zsh) | ||
21 years agoMatt Armstrong committed change 4009 into Another test case showing that circular INCLUDE dependencies aren't handled correctly by jam. | ||
21 years agoMatt Armstrong committed change 4010 into Oopse -- wasn't complete. | ||
21 years agoMatt Armstrong committed change 4004 into Back out changes 3969, 3971, 3972 -- they didn't really fix anything. | ||
21 years agoMatt Armstrong committed change 3972 into bootstrap integrations from //guest/matt_armstrong/jam/fix/2/... (no code change) | ||
21 years agoMatt Armstrong committed change 3971 into Take //guest/matt_armstrong/jam/fix/2/... changes. | ||
21 years agoMatt Armstrong committed change 3969 into Integrate from //guest/matt_armstrong/jam/fix/2/...@3963 -- no real changes. | ||
21 years agoMatt Armstrong committed change 3968 into Fix //guest/matt_armstrong/jam/bug/1/... and //guest/matt_armstrong/jam/bug/2/... in one go. jam2.5rc3 attempts to turn INCLUDES into DEPENDS by tu...rning every INCLUDES into an implicit node in the dependency graph. The problem with this approach is that make.c and make1.c algorithms work only with acyclic graphs, and INCLUDES relationships are often cyclic. This branch backs out //public/jam/src/... changes 2614 and 3057 and merges in //guest/matt_armstrong/jam/fix/includes/... changes 2573, 2574 and 2575. The end result is that make.c now copies a target's INCLUDES to its DEPENDS list as it walks through the graph. The end result is that at the end of make.c, every target's DEPENDS list includes all its direct dependencies *and* all of the implicit dependencies that INCLUDES creates. This creates more nodes, but is immune to cycles in the INCLUDES chain. An alternative approach would be to change every use of t->depends to use a smart iterator. The iterator would generate a temporary list containing all of t->depends and all of associated INCLUDES. This list would be iterated over and disposed. I didn't take this approach because it was more complex, and I rather like the -dd debug output my patch generates (i.e. the "implicit" lines for DEPENDS and INCLUDES relationships that are implicitly created via INCLUDES). « | ||
21 years agoMatt Armstrong committed change 3967 into | ||
21 years agoMatt Armstrong committed change 3966 into Ignore change 3057 from //public/jam/src/... | ||
21 years agoMatt Armstrong committed change 3965 into | ||
21 years agoMatt Armstrong committed change 3964 into Integrate change 2614 from //public/jam/src/..., but ignore it. | ||
21 years agoMatt Armstrong committed change 3963 into | ||
21 years agoMatt Armstrong committed change 3962 into make testbug executable | ||
21 years agoMatt Armstrong committed change 3959 into Circular header dependency bug in jam 2.5rc3. Run the 'testbug' script to see the bug. | ||
21 years agoMatt Armstrong committed change 3958 into patchlevel a.s to indicate fix for parallel builds with circular INCLUDES chains. | ||
21 years agoMatt Armstrong committed change 3955 into type -> text+w | ||
21 years agoMatt Armstrong committed change 3954 into type -> text+w | ||
21 years agoMatt Armstrong committed change 3952 into OPT_FIX_CIRCULAR_INCLUDES, to fix //guest/matt_armstrong/jam/bug/1/... | ||
21 years agoMatt Armstrong committed change 3951 into Avoid an ambiguous "else" | ||
21 years agoMatt Armstrong committed change 3950 into Integrate from //guest/matt_armstrong/jam/fix/1/... thru change 3948 and make no changes. | ||
21 years agoMatt Armstrong committed change 3949 into Fix bug //guest/matt_armstrong/jam/bug/1/... make1.c produces incorrect results with circular dependencies and the -j flag. This is fine, sinc...e circular dependencies indicate an error in a Jamfile somewhere. However, jam 2.5rc3 implicitly converts "INCLUDES" into an internal "DEPENDS" and so creates circular dependencies that are not bugs in the project's Jamfiles. See perforce public depot change 2614. One case where this causes files to be built out of order is //guest/matt_armstrong/jam/bug/1/... -- this is a distilled test case built from a real source tree. Usually this poses no problems, since INCLUDES is typically used for header files and those are rarely generated at build time. But systems that generate header files at build time are vulnerable to this bug. The fix implemented here is to make make1.c invulnerable to circular INCLUDES dependencies. The fix ensures that make1a() only processes only "real" targets (not the implicit internal INCLUDES dependencies). When it processes a target, it gathers up all the INCLUDES dependencies into a list and processes that list, instead of using recursion. « | ||
21 years agoMatt Armstrong committed change 3948 into Initial branch to play around with bug //guest/matt_armstrong/jam/bug/1/... which shows up with jam 2.5rc3 (perforce public depot change 3108). | ||
21 years agoMatt Armstrong committed change 3947 into | ||
22 years agoMatt Armstrong committed change 3693 into Update patchlevel (to reflect recent bug fixes). #include string.h instead of strings.h | ||
22 years agoMatt Armstrong committed change 3686 into Get rid of purify specific code. | ||
22 years agoMatt Armstrong committed change 3684 into duh | ||
22 years agoMatt Armstrong committed change 3685 into Compile with gcc correctly. | ||
22 years agoMatt Armstrong committed change 3683 into Checkpoint improved memory use canges. | ||
22 years agoMatt Armstrong committed change 3665 into Fix debug statement logging. Under NT, don't compile debug versions by default. | ||
22 years agoMatt Armstrong committed change 3662 into oopse | ||
22 years agoMatt Armstrong committed change 3661 into improve progress indication | ||
22 years agoMatt Armstrong committed change 3656 into Partial support for a -T flag that prints out more detailed memory usage statistics. | ||
22 years agoMatt Armstrong committed change 3633 into Updates to the readme (makefile editing is usually not necessary) | ||
22 years agoMatt Armstrong committed change 3632 into More tweaks -- building on windows and unix now simpler. | ||
22 years agoMatt Armstrong committed change 3631 into Windows version of the makefile, and other edits. | ||
Adjust when notifications are sent to you about reviews that you're associated with (as an author, reviewer, project member or moderator).