summaryrefslogtreecommitdiffstats
path: root/src/build.cc
Commit message (Collapse)AuthorAgeFilesLines
...
* adjust restat behavior around missing outputsEvan Martin2012-01-051-8/+7
| | | | | | | 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.
* windows: don't use \e in stringEvan Martin2012-01-051-1/+1
|
* convert all time_t to a new TimeStamp typeEvan Martin2012-01-051-5/+5
|
* Fix the TODO in Rule class.Thiago Farina2011-12-241-1/+1
| | | | | | Move various data members to private section and provide accessors for them. Signed-off-by: Thiago Farina <tfarina@chromium.org>
* make Rule::generator_ and restat_ privateEvan Martin2011-12-071-1/+1
|
* make Node::out_edges_ privateEvan Martin2011-12-071-4/+4
|
* make Node::in_edge_ privateEvan Martin2011-12-071-3/+2
|
* make Node::dirty_ privateEvan Martin2011-12-071-4/+4
|
* merge FileStat into NodeEvan Martin2011-12-071-11/+11
| | | | | | 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.
* refactor to remove Node::ready()Evan Martin2011-12-071-4/+2
|
* add and use getter for Edge::rule_Evan Martin2011-12-071-2/+2
|
* Use the modification time of the depfile when computing restat_mtimePeter Collingbourne2011-12-061-1/+9
| | | | Fixes issue #144.
* disable the 'unused parameter' warningEvan Martin2011-12-051-1/+1
| | | | It was firing too often, and hadn't uncovered any bugs.
* refactor RecomputeOutputDirty to return true/false for dirtyEvan Martin2011-12-041-8/+3
| | | | | | | | | 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.
* windows: don't buffer stdoutEvan Martin2011-12-021-0/+5
|
* Remove warning triggered by -Wextra on MinGW.Nicolas Despres2011-11-191-0/+2
|
* Add -Wextra warning flag.Nicolas Despres2011-11-191-1/+1
| | | | | | | Fix triggered warnings: - unused parameter - type qualifiers ignored on function return type - missing initializer for member
* Implement restat rulesPeter Collingbourne2011-10-241-2/+95
| | | | | | | | | | | | | | | | | 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).
* Split Node::dirty_ into two flags: Node::dirty_ and Edge::outputs_ready_Peter Collingbourne2011-10-181-39/+52
| | | | | dirty_ is intended to remain static during the build (unless a restat occurs), while outputs_ready_ reflects the dynamic state of the build.
* Elide output in the middle when exceeding terminal width.Nicolas Despres2011-10-121-3/+4
| | | | | | | | | | 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.
* verify -k param is numericEvan Martin2011-09-091-2/+2
| | | | Fixes issue #85.
* fix redundant manifest rebuildEvan Martin2011-09-081-5/+6
| | | | | | | 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.
* Factor out State struct from ninja_jumble.cc into its header/source files.Thiago Farina2011-09-031-1/+2
| | | | | | This was a TODO in src/ninja_jumble.cc. Now this task is completed. Signed-off-by: Thiago Farina <tfarina@chromium.org>
* Move RealDiskInterface class to disk_interface.h.Thiago Farina2011-08-251-0/+1
| | | | | | This is a TODO in src/ninja_jumble.cc Signed-off-by: Thiago Farina <tfarina@chromium.org>
* move GetTimeMillis to utilEvan Martin2011-05-241-15/+1
|
* simplify CommandRunner, simplifying users tooEvan Martin2011-05-171-26/+9
| | | | | After much staring at this I think I found the more clear way to express what it's doing.
* rearrange build loop, pass new testEvan Martin2011-05-171-24/+56
|
* show started, not finished, edges in progressEvan Martin2011-05-141-3/+4
| | | | | | 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.
* correctly compute truncation marginEvan Martin2011-05-141-2/+4
|
* refactor status printing into BuildStatusEvan Martin2011-05-141-71/+78
| | | | | | 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.
* hide internals of BuildStatusEvan Martin2011-05-141-12/+13
|
* SEMANTIC CHANGE: implicit inputs are now required to existEvan Martin2011-05-131-2/+1
| | | | | | Edges found through depfiles are special: they get an extra empty "phony" rule. (This is identical to the way you hack this with Makefiles.)
* add a versioning header to build log, switch to v2Evan Martin2011-05-111-11/+19
| | | | | In v2 we store both the start and end time of the command. This allows better visualization of the build process.
* expose -k flag to usersEvan Martin2011-05-091-1/+4
|
* add support for ignoring failures of some subtasksEvan Martin2011-05-091-4/+8
|
* windows: subprocess implementation for WindowsEvan Martin2011-05-061-1/+1
| | | | Heavily based on a patch from Sergey Nenakhov <nenakhov.sergey@gmail.com>.
* refactor subprocess to make it easier for windows portEvan Martin2011-05-031-7/+4
| | | | | | 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.
* windows: use millis abstraction instead of non-portable gettimeofdayEvan Martin2011-05-021-14/+28
|
* use refactored function to support implicit "all" targetEvan Martin2011-05-011-4/+11
|
* add doxygen-compatibile comments to most classesEvan Martin2011-04-291-2/+4
|
* [windows] disable smart terminal supportSergey Nenakhov2011-04-231-2/+10
|
* Fix an exception when terminal is narrow or set for unlimited widthScott Byer2011-04-071-3/+5
|
* limit output width to prevent line-wrappingEvan Martin2011-03-021-0/+12
|
* print short name of command before dumping command stdout/stderrEvan Martin2011-03-011-6/+15
| | | | | | 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.
* add copyrightsEvan Martin2011-02-061-0/+14
|
* include command name when printing output, add newlineEvan Martin2011-02-051-6/+10
|
* fancier outputEvan Martin2011-02-051-13/+51
|
* cleanup phony testingEvan Martin2011-02-051-3/+3
|
* implement parallelism flagEvan Martin2011-02-011-3/+4
|
* pass config into build logEvan Martin2011-01-231-1/+2
|