Age | Commit message (Collapse) | Author |
|
|
|
|
|
don't even want to check for a matching file on the file system)
|
|
it, other don't care, it's cheap enough). Slightly tweaked patch that also
guards against empty arrays (though it's unlikely to happen, I don't feel
like proving the array is not empty).
|
|
stopped/continued, as we won't try to start new jobs when other stuff
is stopped.
Redo signal handling so that most stuff can be done directly in the handler.
This requires blocking/unblocking signals while creating new jobs, and creating
a small list that only contains job's pids.
Switch to pgrps for jobs, since that works.
Add a clamping heuristic that avoids starting new jobs while an expensive job
is running (expensive meaning "very likely to be a recursive make run"). This
idea is mostly from Theo, through the implementation is mine.
|
|
into a run_gnode_parallel. That simplifies the control flow of that routine
a bit, to allow for more tweaks in the parallel case.
okay kettenis@, otto@
|
|
mark these utilities as being either optional (SD/FR/UP); or as
being compliant only with XPG4 (XSI); strip.1 and talk.1 are tweaked
purely for consistency;
thanks otto for feedback
|
|
updates to follow;
|
|
|
|
okay otto@
|
|
|
|
|
|
ok espie, jmc
|
|
- add new file to create lists of equivalent targets (siblings)
- use that for sequential mode to have much better VPATH support
- separate checking commands from reporting error, for later.
- zap DieHorribly accordingly
- renumber existing flags
- signal_running_jobs() is simpler than pass_signal_to_jobs()
- new debug option -dn for name matching.
Similar code to handle parallel make is still missing.
thanks to Mark, Miod, Theo, Otto, Todd for tests and/or comments.
|
|
|
|
ok jmc espie
|
|
discussed with deraadt@ and otto@ and millert@
|
|
|
|
|
|
- expand commands earlier, so that we can eventually scan them to take
smarter decisions.
- clean up the select() mask code and rename variables to sensible things.
- quite a few minor renames for readability
- erecalloc
- clean up wait status handling, do not try to rebuild wait status, but
instead parse it early and deal with the parsed code.
tested by lots of people, thanks guys!
|
|
- systematically reorder jobs based on who did output last, so that the
last job to output is *first* to output again.
- better reaction to errors: any job that outputs is checked for termination
directly, and the Error message is printed right afterwards.
- better error messages, giving more useful information in -j mode.
|
|
|
|
Found out by Christian Ehrhardt.
|
|
|
|
This lets suffix rules finally print out where they come from...
|
|
|
|
|
|
Anyways, switch to a growable array for job to do.
Allows us to randomize it.
fix manpage.
do not add delay if just one job to run.
|
|
|
|
jobs in parallel mode.
|
|
|
|
since we might want to make them later.
okay millert@, beck@
|
|
Preparations to fix the engine:
- new function has_been_built(gn), that tells you what's the status of
a given node. Allows us to run Suff_FindDeps later, by updating the number
of unmade children correctly.
- take out the code that handles shell expansions in an expand_children*
set of functions, called by Suff_FindDeps, among others. These must be
called early in the engine to avoid creating bogus nodes.
Engine fixes:
- take the predecessor/successor special handling out, deal with it in
separate functions.
- don't count nodes. Explicitly track them all in a hash table (better
way to deal with non-built issues).
- don't run Suff_FindDeps at start, but just before building an actual node.
This allows make to find all dependencies correctly, as in groff.
Pfiou! now it works.
|
|
|
|
first remove all usage of Varq_Append by building the string directly.
then replace `common' handling with specialized handling for dynamic
strings (since they no longer need a buffer). Finally, identify the place
where the variable value needs to be copied because it's going to be free'd
or erased soon, and finally, use simple char* pointers.
Shaves about 80 bytes off every gnode structure, and kills quite a few
unnecessary malloc()s as well.
|
|
|
|
On the basis that:
- .depend is a bsd extension anyways, changing its semantics doesn't
affect posix compliance.
- it may allow regenerating broken .depend files without needing to
remove them.
approved by miod@, millert@, deraadt@.
|
|
|
|
|
|
to make them easier to find in source files.
|
|
when we cannot find any suffix.
This allows Makefiles like:
.SUFFIXES: .in .sh
all: truc.sh
truc.sh.in:
echo "bonjour" >$@
.in:
sed -e 's/a/b/' <$< >$@
to work (before that, the empty suffix would not be tried, since truc.sh
matches the .sh suffix, even though there is NO transformation).
|
|
Having an `iParents' field is actually backwards, it's ways simpler to
store the pointer in the child, as an impliedsrc, and to set the variable
just in time along with all the rest in DoAllVar.
This is simpler, and it should allow us to call SuffFindDeps much later.
|
|
functions.
Restore a big more debug: if DEBUG(JOB), print commands (unexpanded).
|
|
|
|
|
|
|
|
|
|
no need to duplicate that info at the job level since we can just use
the gn->type.
|
|
|
|
|