summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Document `dyndep` binding behavior and the dyndep file formatBrad King2019-04-181-0/+67
|
* query: load dyndep files for queried edgesBrad King2019-04-181-0/+7
|
* graph: load dyndep filesBrad King2019-04-183-1/+16
| | | | | | Teach the `-t graph` tool to load dyndep files because they are part of the build graph. Issue a warning when the dyndep file cannot be loaded cleanly. This will help users visualize the complete build graph.
* clean: remove outputs specified by dyndep filesBrad King2019-04-183-0/+73
| | | | | | Some outputs may not be known in the main build manifest and are instead discovered through a dyndep binding. Load dyndep files that are available during cleaning so that we can clean these outputs too.
* clean: remove unnecessary Cleaner constructor variantBrad King2019-04-183-15/+1
| | | | | | | | `Cleaner` provides two constructors that are the same except that one constructs a "real" disk interface internally and the other takes a caller-provided disk interface. A real disk interface is already available at the only call site for the former constructor. Use it directly and drop the unnecessary constructor variant.
* Teach builder to load dyndep files when they are readyBrad King2019-04-183-7/+908
| | | | | | | | After finishing an edge that produces a dyndep file, load the file and update the build graph structure. Recompute the dirty state of all its dependents and of newly reachable portions of the graph. Add edges to the build plan that are discovered to be wanted. Finally, schedule edges that are wanted and now ready to build.
* Teach RecomputeDirty to load dyndep files that are readyBrad King2019-04-182-0/+219
| | | | | | | | | | | The full readiness of a node that has a dyndep binding cannot be known until after the dyndep file is loaded. If a dyndep file is ready while constructing the build plan it can be loaded immediately so full information can be used to decide whether anything needs to be built. If a dyndep file is not ready while constructing the build plan then the edges naming it cannot be ready either because the dyndep file is one of their inputs. In this case we defer loading the dyndep file until the build plan is being executed.
* Teach DependencyScan to load a dyndep fileBrad King2019-04-186-2/+355
| | | | | Add a LoadDyndeps method to load a dyndep file and update the edges that name it in their dyndep binding.
* Add a "dyndep" reserved binding to the manifest formatBrad King2019-04-185-3/+108
| | | | | | Allow rules or build statements to specify one of the build statement inputs in a "dyndep" binding. This will later be used to load dependency information from the specified file.
* Add a parser for a new "dyndep" file formatBrad King2019-04-185-0/+821
| | | | | | | | Define a file format suitable for specifying dynamically-discovered dependency information for build edges. Design a format inspired by the build manifest format and using the same lexer. Start with a required format version specification followed by "build" statements that add implicit inputs and outputs to existing edges.
* Explicitly avoid repeat deps loadingBrad King2019-04-183-7/+13
| | | | | | Track for each Edge whether depfile information has been loaded using an explicit flag. This will allow RecomputeDirty to be repeated for an edge without loading deps again.
* Make a Builder optionally available to PlanBrad King2019-04-182-3/+11
| | | | | | | In order to later support dynamic updates to the build plan while building, the Plan will need access to its Builder. Since this access will be needed only for specific features we can avoid updating all Plan constructions in the test suite by making this access optional.
* Factor out output edge ready check from Plan::NodeFinishedBrad King2019-04-182-9/+17
| | | | | Move the logic to a new Plan::EdgeMaybeReady method so it can be re-used elsewhere.
* Factor out edge marking logic from Plan::AddSubTargetBrad King2019-04-182-3/+9
| | | | | Move the logic to mark edges as wanted over to a Plan::EdgeWanted method so it can be re-used elsewhere later.
* Teach FakeCommandRunner to support multiple active commandsBrad King2019-04-181-21/+47
| | | | | | | | Replace our single active edge pointer with a vector and add a parameter that tests can set to limit the number of concurrent edges. Set the default to 1 to preserve the current behavior. Specific tests will be able to override it later to simulate concurrent builds.
* Allow EdgeFinished and NodeFinished to fail with errorsBrad King2019-04-183-37/+75
| | | | | | | Add an 'err' string argument and return a boolean for success. Update call sites to pass an 'err' string argument and check the return value. This will be useful later for adding logic to these methods that may fail.
* Assert precondition in BuildStatus::BuildEdgeStartedBrad King2019-04-181-0/+1
| | | | | This method should be called only with edges that have not already been started.
* Factor out a base class of ManifestParserBrad King2019-04-185-53/+105
| | | | | | Create a Parser base class that holds parser functionality not specific to the build manifest file format. This will allow it to be re-used for other parsers later.
* ManifestParser: Fix typo {expectd => expected}Brad King2019-04-181-1/+1
|
* Remove trailing whitespace from all filesJan Niklas Hasse2019-04-176-5/+47
|
* Merge pull request #1559 from goshhhy/masterJan Niklas Hasse2019-04-171-1/+1
|\ | | | | make inline.sh more portable
| * make inline.sh more portablegoshhhy2019-04-161-1/+1
|/
* Feature/add term env dumb to win32 (#1550)jhuels2019-04-161-5/+9
| | | Add reading of TERM variable for win32 dumb terminals
* Merge pull request #1553 from ddrone/patch-1Jan Niklas Hasse2019-04-101-1/+1
|\ | | | | Update link to premake
| * Update link to premakeddrone2019-04-101-1/+1
|/
* Take CPU set limitations into account when calculating processor countJan Niklas Hasse2019-02-261-0/+9
| | | | Fixes #1278.
* Merge pull request #1529 from grahamc/patch-1Jan Niklas Hasse2019-02-091-0/+3
|\ | | | | Docs: Make builds reproducible by generating the same IDs from the sa…
| * Docs: Make builds reproducible by generating the same IDs from the same inputsGraham Christensen2019-02-071-0/+3
|/
* Fix Fuchsia typoJan Niklas Hasse2019-02-051-1/+1
|
* mark this 1.9.0.gitJan Niklas Hasse2019-01-301-1/+1
|
* Merge pull request #1525 from avallee/patch-1Jan Niklas Hasse2019-01-301-1/+1
|\ | | | | ninja_syntax.py: remove unused has_path argument
| * ninja_syntax.py: remove unused has_path argumentAlex Vallee2019-01-301-1/+1
|/ | | The usage of the parameter was removed a long time ago and was never cleaned up. The argument is not provided in the test.
* Remove outdated part about Chrome download, fix #1338Jan Niklas Hasse2018-12-201-11/+3
|
* Remove dead Chromium link, fix #1263Jan Niklas Hasse2018-11-251-2/+1
|
* Merge pull request #1484 from smeenai/gyp-to-gnJan Niklas Hasse2018-11-251-3/+3
|\ | | | | Change gyp to gn
| * Change gyp to gnShoaib Meenai2018-10-191-3/+3
| | | | | | | | | | Chrome has switched from gyp to gn, and Fuschia also uses it now. Note that the "Chromium Ninja documentation" link is dead, but I'm not sure what to replace it with. The closest I've found is https://chromium.googlesource.com/experimental/chromium/src/+/refs/wip/bajones/webvr/docs/ninja_build.md, but I'm not sure that's the original intended target.
* | Merge pull request #1039 from bradking/improve-depfile-parserNico Weber2018-11-2111-65/+357
|\ \ | | | | | | Fix depfile parser handling of multiple rules
| * | Restore depfile toleration of multiple output paths on distinct linesBrad King2018-11-1911-17/+120
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prior to introduction of depfile parser handling of multiple rules, ninja silently accepted a depfile of the form: out: in1 in2 in3 other: otherIn1 otherIn2 otherIn3 and incorrectly treated `other` and `otherIn*` as additional inputs to `out`. Now we prefer to reject this just as we already do for a depfile specifying multiple outputs on one line. However, this can break existing cases where such a depfile was silently tolerated. Add a `-w depfilemulti={err,warn}` option to control this behavior, and make it just a warning by default.
| * | Fix depfile parser handling of multiple rulesBrad King2018-11-193-33/+225
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently we handle Makefile rules of the form: out: in1 in2 in3 and the form: out: in1 \ in2 \ in3 Teach the depfile parser to handle the additional form: out: in1 out: in2 out: in3 This is also valid Makefile syntax and is the depfile format generated by the Intel Compiler for Windows. Note that the `gcc -MP` option adds empty phony rules to the generated Makefile fragment: out: in1 in2 in3 in1: in2: in3: Previously we tolerated these because they were treated as inputs, which was accidentally correct. Instead we must now tolerate these by ignoring targets for which no dependencies are specified.
| * | Fix depfile parser test case line continuationBrad King2018-11-191-4/+4
| | | | | | | | | | | | | | | | | | | | | Escape newlines for line continuation in the SpecialChars test case. Otherwise the test does not cover valid Makefile syntax. The missing line continuation was tolerated by our parser but is never (not) produced by a real compiler.
| * | Re-arrange depfile parser token processing logicBrad King2018-11-192-22/+20
| | | | | | | | | | | | | | | Re-arrange the existing logic to support later addition of post-token code even for empty tokens.
| * | Re-generate depfile parser with re2cc 1.0.1Brad King2018-11-191-3/+2
|/ /
* | Add OSX build on travis (#1502)Takuto Ikuta2018-11-172-4/+12
| | | | | | Also make test script works for OSX script command.
* | Fit --help output into 80 columns and move verbose up, fix #1500Jan Niklas Hasse2018-11-161-3/+3
| |
* | Merge pull request #1474 from mathstuf/win32-invalid-parameter-helpJan Niklas Hasse2018-11-164-4/+13
|\ \ | | | | | | Win32 invalid parameter help
| * | subprocess-win32: add hint on ERROR_INVALID_PARAMETERBen Boeckel2018-11-091-0/+4
| | | | | | | | | | | | | | | This is generally associated with the command line being too long. Give a hint to this case in the error message.
| * | Win32Fatal: support a "hint" for the errorBen Boeckel2018-11-092-3/+7
| | | | | | | | | | | | | | | The callsite might have extra context which is helpful for interpreting the error message.
| * | manual: mention the "invalid parameter" caseBen Boeckel2018-11-091-1/+2
| | | | | | | | | | | | | | | This happens often enough and the error message is quite unhelpful. Mention this error explicitly in the documentation.
* | | Merge pull request #1462 from GoaLitiuM/win10colorJan Niklas Hasse2018-11-161-0/+12
|\ \ \ | | | | | | | | Enable ANSI escape sequences on Windows 10 terminals
| * | | Enable ANSI escape sequences on Windows 10 terminalsGoaLitiuM2018-11-141-0/+12
| | | |