| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
| |
If a restat rule claims to write an output but doesn't, consider it
"no change" (in the restat sense) if the output didn't exist beforehand.
I.e. if the output didn't exist before and the output doesn't exist after,
we don't need to run dependent rules.
|
| |
|
| |
|
|
|
|
|
|
| |
Move various data members to private section and provide accessors for them.
Signed-off-by: Thiago Farina <tfarina@chromium.org>
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
The two were always one-to-one anyway. I started adding accessors
to FileStat and then realized most users wanted them on Node and
that forwarding them through was silly.
|
| |
|
| |
|
|
|
|
| |
Fixes issue #144.
|
|
|
|
| |
It was firing too often, and hadn't uncovered any bugs.
|
|
|
|
|
|
|
|
|
| |
Rather than taking whether the edge is dirty as an input, instead
only consider the arguments and return true/false, allowing the caller
to decide what to do with that information. (In the restat case we
were faking out the environment to get particular behavior for this.)
Should have no side effects, but this is part of fixing issue 148.
|
| |
|
| |
|
|
|
|
|
|
|
| |
Fix triggered warnings:
- unused parameter
- type qualifiers ignored on function return type
- missing initializer for member
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A restat rule is a rule which is capable of pruning the build tree
depending on the timestamps of its outputs before and after a build.
After a restat rule is rebuilt, Ninja will re-stat each output file
to obtain its current timestamp. If the timestamp is unchanged from
when Ninja initially stat'ed the file before starting the build,
Ninja will mark that output file as clean, and recursively for each
reverse dependency of the output file, recompute its dirty status.
Ninja then stores the most recent timestamp of any input file in the
build log entry associated with the output file. This timestamp
will be treated by future invocations of Ninja as the output file's
modification time instead of the output file's actual modification
time for the purpose of deciding whether it is dirty (but not whether
its reverse dependencies are dirty).
|
|
|
|
|
| |
dirty_ is intended to remain static during the build (unless a restat
occurs), while outputs_ready_ reflects the dynamic state of the build.
|
|
|
|
|
|
|
|
|
|
| |
When building projects with long file paths, the rule name may
disappear since the output is elided on the left side.
So you no longer know whether you are compiling or linking.
I think the user is interested in both the rule name and the file name.
Eliding the output in the middle solves this problem.
|
|
|
|
| |
Fixes issue #85.
|
|
|
|
|
|
|
| |
Don't rebuild the manifest when it's already up to date.
The underlying problem was that Builder::Build has a confusing API;
split the API so it's more clear for callers what the return values
mean.
|
|
|
|
|
|
| |
This was a TODO in src/ninja_jumble.cc. Now this task is completed.
Signed-off-by: Thiago Farina <tfarina@chromium.org>
|
|
|
|
|
|
| |
This is a TODO in src/ninja_jumble.cc
Signed-off-by: Thiago Farina <tfarina@chromium.org>
|
| |
|
|
|
|
|
| |
After much staring at this I think I found the more clear way to
express what it's doing.
|
| |
|
|
|
|
|
|
| |
In verbose mode (where we don't overprint) it's confusing to show
[0/XX] for the first N commands we start. In smart terminal mode,
I can't really tell the difference.
|
| |
|
|
|
|
|
|
| |
Centralizing printing allows being more careful about what is output.
1) Always include the [2/15] prefix on commands.
2) Make the header command match the error output command.
|
| |
|
|
|
|
|
|
| |
Edges found through depfiles are special: they get an extra
empty "phony" rule. (This is identical to the way you hack this
with Makefiles.)
|
|
|
|
|
| |
In v2 we store both the start and end time of the command.
This allows better visualization of the build process.
|
| |
|
| |
|
|
|
|
| |
Heavily based on a patch from Sergey Nenakhov <nenakhov.sergey@gmail.com>.
|
|
|
|
|
|
| |
Rather than tracking stdout/stderr explicitly, just keep an opaque
pointer to a platform-specific 'stream' type. Also provide API
to get at the process output.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Previously we showed the full command line, but with this change
we only show the full command line in verbose mode or when the
command fails.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|