summaryrefslogtreecommitdiff
path: root/usr.bin/make
AgeCommit message (Collapse)Author
2007-11-03document that .ORDER only means something in parallel modeMarc Espie
2007-11-03do the silent/ignore check in Job_CheckCommands, so that make -j4 -s worksMarc Espie
2007-11-03fix an obnoxious bug: in parallel mode, dieing in the job controller is notMarc Espie
the same as dieing in a sub job, since waiting on sub-jobs won't work. So keep track of who we are via a state variable.
2007-11-03suff.c sets IMPSRC correctly, whereas this is bogus and strips the pathMarc Espie
a lot of the time.
2007-11-03zap confusing old commentMarc Espie
2007-11-03mark nodes as made when there is no command around the target.Marc Espie
real files get updated anyways, but phony nodes stay around as unmade, which breaks things in subtle ways, since parallel mode just assumes things get built.
2007-11-02sort arguments;Jason McIntyre
2007-11-02Work done at p2k7.Marc Espie
This is a really big step towards getting parallel make to work. Note that this is not yet complete. There are still a few `details' to fix before this works 100%. Specifically: sequential make (compat) and parallel make don't use the same engine, and the parallel engine still has a few limitations. For instance, some known issues: - parallel make does not deal with .phony targets correctly all the time. - some errors are deadly in parallel make mode. - parallel make NEEDS way more sturdy correspondance of file system paths and target names, since it often needs to match dependencies to targets before the corresponding files exist. - some local variables like $* get set in a bogus way in some cases. - suffix handling has issues, especially related to the NULL suffix. So, if you find stuff that does NOT yet work with parallel make, don't go blindly try to fix the Makefile. It's very likely you might have stumbled into a make bug. (unless you really, really, understand Makefiles, DON'T GO CHANGING THEM YET). Tested by lots of people, thanks go to miod@, and robert@ among other people. Quick summary of what this does: - remove `saving commands' extension (it's not really usable, nor used) - move compat job runner and parallel interrupt handling into engine.c - tweak the code so that both compat and parallel mode use the same job runner and the same interrupt handling. Remove the other one. - optimize job runner so that, in parallel mode, the last command does not fork if we can avoid it (as it's already running in a sub shell). - scrape all the code that dealt with creating shell scripts from commands. - scrape all the code that dealt with recognizing special sequences in command output to print/not print output. - fix the parallel job pipe to not keep around file descriptors that are not needed. - replace the parallel job buffering with a nicer one, that deals with non-blocking descriptors to try to agregate as much output from one job in one go (greed) to unconfuse the users. - create two pipes per job, so that stdout and stderr stay separate. - make job token printing a debug option. - always use the parallel job-runner to `execute' commands, even if we just print them out. - store list of errors encountered during parallel make running, and print them on exit, so that we know what went wrong. - add a dirty hack to targ.c to deal with paths produced by gccmakedep.
2007-10-27fix indentationMarc Espie
2007-10-24fix logic of command line/ MAKEFLAGS parsing.Marc Espie
Forces make to see the -j4 in MAKEFLAGS and to actually pass it to submakes
2007-10-23Fix CLEANFILESMiod Vallat
2007-10-14allows node to be run twice, by not destroying the cmdnode contents.Marc Espie
This way, you can run `make .BEGIN'. Okay, this will run .BEGIN twice.
2007-10-09factor out identical codeMarc Espie
2007-10-09cut up JobStart, prepare the job to be run in a separate functionMarc Espie
2007-10-09don't bother returning anything from JobStart, we don't look at it anywaysMarc Espie
2007-10-09minor refactor: introduce function start_queued_job, to make it more apparentMarc Espie
JobStart and JobRestart often do the same thing. Move JobMakeArgv call around for similar reasons. Introduce new list (queuedJobs) we don't use yet.
2007-10-09rename jobs to more descriptive runningJobs (and easier to grep)Marc Espie
2007-10-09just-in-time signal handling: do not setup the handlers until we need them.Marc Espie
2007-10-09rename functions for clarity.Marc Espie
Add a global `got_signals' to quick-path thru handle_all_signals. remove most of the #ifdef USE_PGRP cruft: always be ready to handle those signals, just do not define a handler for them yet.
2007-10-06replace realloc/memset/pointer-arithmetic with recalloc; ok millert@ ray@ espie@Constantine A. Murenin
2007-09-29simple refactoring: replace convoluted code with simple equivalent testMarc Espie
structure.
2007-09-29use constant FD_CLOEXEC, more readable than 1.Marc Espie
zap comment that should have gone with setting use_pipes.
2007-09-29remove comment that no longer apply.Marc Espie
Replace a stupid comment with something that makes sense. (this function needs a rewrite, it's incredibly stupid anyways)
2007-09-23don't even attempt to reuse the same temp file name.Marc Espie
Just create a new one each time we need it, and kill the file right away.
2007-09-23now, JOB_FIRST is always set, so kill more conditional code.Marc Espie
(taken from NetBSD)
2007-09-23last parameter to JobStart is always NULL, so nuke it.Marc Espie
2007-09-23compatMake is never true in there, so kill dead code.Marc Espie
2007-09-23zap keywords we don't have. remove exercise that says we don't have $$V,Marc Espie
since we do ;)
2007-09-23put parsing of operator (:, ::, !) into its own functionMarc Espie
2007-09-23replace if (DEBUG(job)) { fprintf(stdout,...); fflush(stdout); }Marc Espie
with a debug_printf() function. Maybe slightly slower, but it's ways easier to read.
2007-09-23kill local/jobs distinction. Correctly this time...Marc Espie
2007-09-23more specific error messages if dup2 failsMarc Espie
2007-09-23zap sunos bug work-aroundMarc Espie
2007-09-22rename functions and data structures for clarityMarc Espie
2007-09-22reindentMarc Espie
2007-09-18reindent cond.cMarc Espie
2007-09-18better comments, sNum -> order. SUFF_EXISTS -> SUFF_ACTIVEMarc Espie
2007-09-18internal macro should be invisible from outsideMarc Espie
2007-09-18reindent a few lines in parse.c which are missing it.Marc Espie
2007-09-18make -DCLEANUP compile againMarc Espie
2007-09-18reindent new partMarc Espie
2007-09-18missing prototype for static functionMarc Espie
2007-09-18revert maxLocal removal, there's something fishy going on.Marc Espie
2007-09-17avoid printing out special targets in debug modeMarc Espie
2007-09-17always define the svr4namelist. Doesn't hurt, even if we don't use it.Marc Espie
2007-09-17rewrite of the basic suffix/target parsing: use hash for suffixes.Marc Espie
Store special targets in target hash, and use them for the parsing. Use OP_DUMMY flag to mark targets that don't really exist yet, such as interrupt and default nodes. Also, .PATHxxx is special in suffixes. Small tweaks to compat.c, so that run_commands does more stuff after the fork() (and thus no need to free things). Remove distinction between local and global jobs.
2007-09-17reindentMarc Espie
2007-09-17fix indentMarc Espie
2007-09-17reorg the directory code a bit.Marc Espie
Instead of readDir, explicitly create PathEntry, and increment the refcount in there, which is simpler.
2007-09-17minor tweaksMarc Espie