| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
noticed by jsg@
|
|
|
|
|
|
|
|
|
| |
standard one (:) to the very BSD specific (!) so that standard Makefiles
keep working in the presence of ! in filenames.
This doesn't supersede the usual heuristics of choosing the operator
followed by space if several are present.
okay millert@
|
|
|
|
|
|
| |
OP_INVISIBLE)
okay millert@
|
|
|
|
|
|
|
|
|
|
|
| |
okay on principle from millert@/schwarze@
The rationale is that those aren't even documented (apart from .MADE) and
the corresponding code has never been maintained (just untouched when
changing other things, so it probably doesn't work right if it ever did)
This went through a full release/bulk to make sure nobody was using that stuff.
okay millert@
|
|
|
|
|
|
|
|
|
| |
- have a simple variable "sequential" that counts whether we are
running more than one job (for the expensive heuristics)
- don't expose various things globally, just have a set_noparallel() for
the parser
- preallocate exactly enough job structures and record them in availableJobs
- keep one job on the side for .INTERRUPT
|
|
|
|
|
|
|
| |
needed, because if we're special it's a target, if we have special_op,
it's a source.
There's just SPECIAL_WAIT which requires funny handling anyhow
|
|
|
|
|
|
|
| |
Rename Suff_ClearSuffixes to the more explicit Suff_DisableAllSuffixes
which describes accurately what this function actually does.
remove outdated comments about .INCLUDE/.LIBS
|
|
|
|
|
|
| |
ago. Document what's actually going on with special keywords (mostly .PATH
has special semantics) and document that SPECIAL_NOTHING corresponds to
ignoring former keywords.
|
|
|
|
|
|
| |
be reused throughout running make. Instead of recreating buffers of
dubious appropriate size, have one single buffer for various stages of
parsing.
|
|
|
|
|
|
|
|
| |
are created exactly once, so they don't need to be looked up to check whether
they exist or not.
Go thru a Targ_mk_node internal with all the special fields, and note the
special nodes are the only one with special values in there
|
|
|
|
|
| |
unconfuse type/special field
(first commit of a large patch that was ok'd tb@, millert@)
|
|
|
|
|
|
|
|
|
|
| |
- define OP_ZERO as zero, to make some function calls obvious
- split ParseDoOp into two functions: ParseDoOp that only deals with : :: !
and ParseDoSpecial that only deals with special nodes. This simplifies both
functions accordingly
- always initialize special_op
okay millert@
|
|
|
|
|
|
|
|
| |
adjust comments to be more meaningful
reorder predecessors/successors fields in an order that
makes more sense to me.
okay millert@
|
|
|
|
| |
ok krw@ millert@
|
|
|
|
| |
With support from guenther@ and millert@; final okay espie@
|
|
|
|
|
|
| |
is all the line.
problem reported by Sergey Bronnikov
|
|
|
|
| |
feedback and okay millert@
|
|
|
|
|
|
|
|
| |
- remove a lot of unnecessary casts
- zap extra param that's no longer needed
- add proper prototype and make function static
okay natano@
|
|
|
|
| |
small improvement and okay millert@
|
|
|
|
|
|
|
|
| |
various problems.
Problem noticed by jsg@, deeper patch than he suggested
okay jsg@ and tb@.
|
|
|
|
|
|
|
|
| |
in two. Catch 22: we have to dedup targets very early so that commands get
attached correctly, but we can't figure out the grouplings heuristics until
we have all commands...
ok millert@
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
can have duplicates, or overlap, or even be empty thanks to fnmatch.
So use the big guns to build the circular list correctly, namely
actual lists of targets that are made together will be registered in a
hash first, then we recreate the full list from there.
(merging lists is not an issue, since groupling links are only used to
temporarily lock targets in parallel mode).
Issue noticed by guenther@, okay guenther@
|
|
|
|
|
| |
-pedantic kind of requires -std=c99 here to avoid LL warnings)
okay miod@, millert@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
else, in some cases by adding extra temporary variables.
IMO, it's much better practice to do
void *a;
int *p = a;
*p = 42;
rather than
void *a;
*(int *)a = 42;
okay miod@... to be revisited for some possible const additions later.
|
|
|
|
|
|
| |
cast to unsigned chars.
okay deraadt@
|
|
|
|
| |
okay beck@
|
|
|
|
|
|
|
|
|
| |
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@
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
| |
be slightly more verbose and really explain what's going on.
okay millert@
|
|
|
|
|
|
| |
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)
|
|
|
|
|
|
|
|
| |
recognize that and create a struct Location_ for it.
mostly from Jonathan Calmels, a few nits from me.
okay otto@
|
|
|
|
| |
okay miod@
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
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).
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
on.
Start getting rid of globals by passing explicit parameters
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|