summaryrefslogtreecommitdiff
path: root/usr.bin/make
AgeCommit message (Collapse)Author
2012-12-07job.h is also used for compat sequential mode.Marc Espie
2012-12-07document engine interface, remove internal function from visible interfaceMarc Espie
2012-12-07gc dead codeMarc Espie
2012-12-07gc old defineMarc Espie
2012-12-06missing externMarc Espie
2012-12-06... and zap redundant declaration.Marc Espie
2012-12-06old code is gone, remove comments and prototypesMarc Espie
2012-11-24complement "need an operator" fatal error message with the actual line content.Marc Espie
okay beck@
2012-11-24Don't output a . at the end of directory, as it is confusing.Marc Espie
okay beck@
2012-11-24be more strict in recognizing .if keyword() constructs, don't ignoreMarc Espie
unknown keywords. uniform white space handling. okay beck@
2012-11-24clean-up: move up .USE handling, so that the rest becomes a simple switch()Marc Espie
okay beck@
2012-11-21${.ALLSRC} and ${.OODATE} should always be defined, even for empty listsMarc Espie
of prerequisites. This prevents complaints from the var module and from other developers. That's a bug I introduced 5 years ago... found out by miod@ okay miod@
2012-11-07say goodbye to killing trailing spaces.Marc Espie
this was yet another weirdness in our make that isn't shared by other makes, and that isn't part of any standard. This means end-of-line spaces in variables ARE significant (spaces around the equal sign still aren't). okay sthen@, "sounds fine" deraadt@
2012-10-23fix fringe case where length is around 140.Marc Espie
problem found by Tobias Ulmer.
2012-10-18numerous error message fixes:Marc Espie
- do ^C checking differently: don't record sent signals, but when jobs die, recheck whether we received/have pending a INT/QUIT/TERM/HUP signal. Then don't display our process group "normally", instead group together everything dying by signal/shell dying by signal (just give the target names). - make certain we always handle signals before dying from "other conditions" - have the parser messages look more like normal messages - remove double error messages from some parser errors - make sure unclosed variables ARE errors when some modifiers are present - keep track of the base directory we're run from, so that submakes can get shortened directories... - make sure the whole error message including silent command fits into a reasonable length. okay millert@
2012-10-12Document duplicate inference rules. That's posix behavior, and what we do.Marc Espie
2012-10-12fix infinite loops on regexps that match the empty word, which isMarc Espie
especially bad during runtime as we trap ^C. For instance ${A:C/-*//g}. Problem found by rpe@ Do the same as other modern tools: advance by one char and repeat, so that there's at most one empty word match at each position. okay millert@
2012-10-11amend bug section with some fixed stuff.Marc Espie
2012-10-11fix make's cond parser to be able to handle .if 5 < 7 directly.Marc Espie
okay millert@
2012-10-09... yet more documentation, lots of inputs from jmc@ as usual.Marc Espie
2012-10-09steal .if commands() concept from NetBSD.Marc Espie
Actually less ambiguous than .if target().
2012-10-09warn about targets with multiple command lists (debug option), as it'sMarc Espie
definitely non portable behavior. discussed with millert@, who rightfully insisted on the optional debug part
2012-10-09actual engine change: prevent jobs from stomping on each other's files.Marc Espie
namely: - targets that ARE the same file shouldn't build concurrently. - targets in the same group (e.g., file.c file.c: file.y) shouldn't build concurrently. This probably fixes all the remaining races in make -j4 build in src.
2012-10-09recognize new debug options for double commands, heldjobs, target groupMarc Espie
construction
2012-10-09tweak error messages yet some more, lots of feedback fromMarc Espie
deraadt@, millert@
2012-10-09- SPECIAL_DEPRECATED -> SPECIAL_NOTHINGMarc Espie
- nodes for .POSIX and .SCCS_GET (which don't do anything) - zap remaining suffix crud. new scaffolding: - groupling list and HELDBACK state to avoid races in engine. - parser recognizes lists of targets that shoul be grouped together - OP_DOUBLE to mark nodes that have multiple lists of commands
2012-10-09new interface: look in command lines for variables that indicate a list ofMarc Espie
targets is actually separate targets.
2012-10-06truncate silent command output to two lines. okay millert@Marc Espie
2012-10-06rework section about special targets/prereq to be somewhat readable.Marc Espie
feedback & ok jmc@
2012-10-06- extra juice for debugging signal passing. Note when we can't pass theMarc Espie
signal because the process already bought it (pgroups will do that to you) (lots of discussion with Todd on that one) - tweak error handling some more to make it less verbose when just one job is running... - show signal name in case of signal interrupts. - zap OP_LIB, move that stuff to the location where we warn when we meet that bug. okay millert@
2012-10-05document implicit rules and target dependency operators better.Marc Espie
some input from jmc@, might not be 100% perfect yet, but better than nothing at all.
2012-10-04backout pgroup/job control from make, there is something deeply bogusMarc Espie
in stdin interaction. Fixes update-patches as reported by aja...
2012-10-02more changes, discussed and tested by various people.Marc Espie
- put back some job control, turns out it's necessary when we don't run a shell. - zap old #ifdef CLEANUP code... probably doesn't even compile. - kill most of the OP_LIB code. Just keep a wee little bit for compatibility (deprecated .LIBS and .INCLUDES, warns for weird dependencies instead of erroring out). - much improved debugging and -p output: sort variables, targets, rules, output stuff in a nicer format mimicing input. - better error message when no command is found, explain where the target comes from. - sort final error list by file. - show system files in errors as <bsd.prog.mk> - reincorporate random delay, that was dropped - optimize siginfo output by not regenerating the whole string each time. - finish zapping old LocationInfo field that's no longer used.
2012-10-02rework make documentation to correspond to usual terms (prerequisitesMarc Espie
instead of "sources", target rules, makefile names). document most recent changes. discussed with jmc@
2012-09-21zap lint remainsMarc Espie
2012-09-21vax, found by fries@Marc Espie
2012-09-21major overhaul of the way make handle jobs, inspired by dpb:Marc Espie
instead of forking a "job" per target, and having that job further fork separate commands, have make maintain a list of jobs, indexed by pid of currently running commands, and handle process termination continuation-style. This has lots of benefits: - make is responsible for most printing, so we no longer need pipes nor job control: make -j jobs see the tty. - no more special-casing for jobs that don't really execute anything. - unify code for make -jn and make -B, including signal handlers and job waiting. So make -n, make -q, +cmd now run commands in the same way in all cases. - unified more accurate error-reporting, as make knows precisely which command failed. Commands are tagged with their lines, and we display failing commands in silent mode. - fine-grained "expensive" command handling (recursion limiter). Do it per-command instead of per-target. Moreover, signal response is now simpler, as we just block the signals in a small critical sections, test for events, and sigpause (thanks a lot to guenther@ and millert@), so running make is now almost always paused without any busy-waiting. Thanks to everyone who tested and gave input.
2012-09-14more accurate fix: don't mark '!' as a meta character, recognize "!" asMarc Espie
a shell reserved word. okay millert@
2012-09-14! is a meta character, this letsMarc Espie
test: ! pgrep process work, without trying to look for a '!' command (remember that not running a shell for each command is an optimization ?) bug fix prompted by eric@'s remark, okay millert@
2012-09-01put back out-of-line version of function.Marc Espie
even with only-inline, won't compile with -O0, so debugging is very difficult... discussed with jsg@
2012-08-25- make wrong variable specs (unterminated) parse errors.Marc Espie
- add info to be able to pinpoint parse errors at runtime. - let job runners abort when a parse error happens while expanding a variable during execution - fix an infinite loop when compiling without FEATURE_RECVARS. okay millert@, krw@ the very few errors found out by this (less than 10 over src/X/ports) fixed trivially beforehand, as requested by deraadt@
2012-08-20make use of __only_inline to ask for gnu inline semanticsJonathan Gray
ok espie@
2012-04-21When a new parent is attached to an already examined child (prerequisite),Philip Guenthe
use the same logic to update the parent (factored out as SuffLinkParent()) as is used for updating the original parent. Fixes the "make -j2" problem reported by tedu@ at c2k11 ok espie@
2012-04-20dyslexy strikes againMarc Espie
2012-04-17this error message was impossible to understand without the source code.Marc Espie
be slightly more verbose and really explain what's going on. okay millert@
2012-04-11make has had heuristics to avoid parallel make recursion.Marc Espie
Sometimes they mess up, so add .CHEAP/.EXPENSIVE to explicitly tell make 'hey this is not THAT bad' or 'worse than you think'. agreed by guenther@, millert@ (and some tweaks)
2012-03-22tweak: consistent include guards, no change in generated code.Marc Espie
2012-03-22minor cleanup: error messages include lineno and fileno together, soMarc Espie
recognize that and create a struct Location_ for it. mostly from Jonathan Calmels, a few nits from me. okay otto@
2011-12-10Use clock_gettime() to get a high precision timestamp, instead ofPhilip Guenthe
converting gettimeofday()'s output, and pass utimes() NULL to get the time from inside the kernel instead ok espie@, stress testing on NFS by deraadt@
2011-11-03Garbage collect an unused variable.Ingo Schwarze
Found by Michael W. Bombardieri <mwb at bom dot nom dot co> using lint. ok deraadt@