summaryrefslogtreecommitdiffstats
path: root/doc
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #1730 from naarcini/masterJan Niklas Hasse2022-02-021-0/+4
|\ | | | | Add 'inputs' tool to print out all inputs for a set of targets
| * Use correct version number for inputs toolJan Niklas Hasse2021-12-211-1/+1
| |
| * Add 'inputs' tool to print out all inputs for a set of targetsNicolas Arciniega2020-02-031-0/+4
| |
* | Merge pull request #1800 from colincross/validationsJan Niklas Hasse2021-12-211-0/+27
|\ \ | | | | | | Add validation nodes to ninja
| * | Add validation nodes to ninjaColin Cross2021-10-121-0/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A common problem in the Android build is inserting rules that perform some sort of error checking that doesn't produce any artifacts needed by the build, for example static analysis tools. There are a few patterns currently used, both of which have downsides. The first is to have a rule that depends on all of the static analysis results. This ensures they run, but requires running static analysis over everything, and not just the active parts of the build graph. The second is to insert the static analysis rule into the build graph between the artifact producing rule and anything that depends on it, often copying the artifact as the output of the static analysis rule. This increases the critical path of the build, often reducing parallelism. In the case of copying the artifact, it also wastes disk space. This patch adds "validation nodes" to edges in Ninja. A build statement can specify validation nodes using "|@" in the edge inputs. The validation nodes are not used as an input to the edge (the edge can run before the validation node is ready), but are added to the initial nodes of the build graph whenever the edge is part of the build graph. The edge that outputs the validation node can depend on the output of the edge that is being validated if desired. Test: ninja_test Change-Id: Ife27086c50c1b257a26509373199664680b2b247
* | | Merge pull request #2045 from Arthur-Milchior/rules_documentationJan Niklas Hasse2021-11-111-3/+3
|\ \ \ | | | | | | | | NF: clarify documentation's part about rules description
| * | | NF: clarify documentation's part about rules descriptionArthur Milchior2021-11-071-3/+3
| |/ / | | | | | | | | | | | | | | | | | | | | | The word "eventually" was quite strange here and should probably removed. I suspect "potentially" was meant (which in French is "eventuellement", a standard false friend). In any way, after a quick look at the source/ninja message, I chose to even clarify this part of the doc, indicating that the `-d` option is required here.
* | | Fix typoDimitris Apostolou2021-11-081-1/+1
|/ /
* | Set output mtime of phony edges to the latest inputsRichard Geary2021-08-021-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit fixes issue #478. Observed: Real edges depending on a phony edge will not be marked as dirty or rebuilt if the phony's (real) inputs are updated. Expected: An edge should always be rebuilt if its inputs or transitive inputs are newer than the output's mtime. Change: Node::mtime_ was overloaded, 0 represented "does not exist". This change disambiguates it by adding Node::exists_. Then to fix the observed behaviour, Node::UpdatePhonyMtime was added to update the mtime if the node does not exist. Add tests BuildTest.PhonyUseCase# GraphTest.PhonyDepsMtimes. Unit tests will also test for always-dirty behaviour if a phony rule has no inputs.
* | Merge pull request #1907 from aDotInTheVoid/patch-1Jan Niklas Hasse2021-03-051-2/+3
|\ \ | | | | | | Clarify purpose for implicit dependencies
| * | Clarify purpose for implicit dependenciesNixon Enraght-Moony2021-01-291-2/+3
| | |
* | | wincodepage: minimize to indicate UTF-8 or notBrad King2021-03-011-7/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | The ANSI code page identifier is more information than generator programs actually need. The encoding of `build.ninja` is always either UTF-8 or the system-wide ANSI code page. Reduce the output to provide no more information than the generator programs need. The Console code page can be obtained in other ways, so drop it.
* | | Add tool to print code page information on WindowsBrad King2021-02-261-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since commit 00459e2b (Use UTF-8 on Windows 10 Version 1903, fix #1195, 2021-02-17), `ninja` does not always expect `build.ninja` to be encoded in the system's ANSI code page. The expected encoding now depends on how `ninja` is built and the version of Windows on which it is running. Add a `-t wincodepage` tool that generators can use to ask `ninja` what encoding it expects. Issue: #1195
* | | doc: fix format of 'missingdeps' documentationBrad King2021-02-261-2/+2
| | | | | | | | | | | | Group all the paragraphs together in the definition list entry.
* | | Add manual entry about the missingdeps toolTomasz Ĺšniatowski2021-02-221-0/+15
|/ /
* | Fix typosDimitris Apostolou2020-07-071-2/+2
|/
* manual: remove "manifest" reference from the manualBen Boeckel2020-01-291-1/+1
| | | | Nothing else describes what a "manifest" is in user-facing docs.
* Merge pull request #1624 from bungeman/patch-1Jan Niklas Hasse2020-01-191-2/+2
|\ | | | | Recommend MD over MMD for header dependencies.
| * Recommend MD over MMD for header dependencies.bungeman2019-08-061-2/+2
| | | | | | The MMD flag will silently omit includes found through pointy brackets or system include paths. This can lead to issues not only when system headers change, but any paths included through the isystem flag. Because the isystem flag implicitly turns off warnings as errors it has often come to be used as a "not my code" flag used with local third party dependencies which may be frequently updated or changed for debugging. As a result, it is far safer to default to MD (which includes all include dependencies) in this example.
* | Add short doc for cleandead tool, fix #1716Jan Niklas Hasse2020-01-181-0/+3
| |
* | Add a short documentation for restat toolJan Niklas Hasse2019-12-231-0/+3
|/
* Merge pull request #1016 from moroten/docs-empty-rule-uptodateJan Niklas Hasse2019-07-091-0/+8
|\ | | | | Describe how to make a phony rule always up to date
| * Describe how to make a phony rule always up to dateFredrik Medley2017-08-161-0/+8
| | | | | | | | | | | | | | A phony rule with no input is always out of date. Describe how to make a rule always up to date. Signed-off-by: Fredrik Medley <fredrik.medley@gmail.com>
* | Resurrect the 'rules' tool.Nicolas Despres2019-05-091-0/+3
| | | | | | | | | | | | | | | | | | This tool is useful for writing shell completion script for tools expecting a rule name as argument. The tool was dropped by 34b46f28c. Fix #1024.
* | Document example dyndep use casesBrad King2019-04-181-0/+83
| | | | | | | | | | | | Show a simple example of Fortran module dependencies (this use case motivated the entire dyndep feature). Also show an example of tarball extraction, a case that few other buildsystems can handle cleanly.
* | Document `dyndep` binding behavior and the dyndep file formatBrad King2019-04-181-0/+67
| |
* | Update link to premakeddrone2019-04-101-1/+1
| |
* | 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
| |
* | 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 #1474 from mathstuf/win32-invalid-parameter-helpJan Niklas Hasse2018-11-161-1/+2
|\ \ \ | | | | | | | | Win32 invalid parameter help
| * | | 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.
* | | Fix rendering of code block, fix #955Jan Niklas Hasse2018-11-141-1/+1
|/ /
* | Add _Available since Ninja 1.4._ to `deps` and `recompact`Nikolaus Wittenstein2017-08-301-2/+2
| |
* | Add `deps` and `recompact` tools to manualNikolaus Wittenstein2017-08-291-0/+5
|/ | | The `deps` tool in particular is very useful to know about.
* Change default NINJA_STATUS to [%f/%t]Colin Cross2016-04-281-1/+1
| | | | | | | | | | | | | | | | | | PR #999 changed the status line to be printed when edges finish on dumb teerminals, but the default status message includes the number of started edges, resulting in sequential status lines with identical edge counts. Change the default status to show the number of finished edges, which will keep the count incrementing on every line. This will slightly change the output on smart terminals. Previously a build that was just starting would show a count equal to the number of concurrent jobs, and a build waiting for the final jobs to finish would show a count equal to the total number of edges. Now a starting build will show 0, and build waiting for the final jobs will show a count less than the total number of edges by the number of remaining jobs. Fixes: #1142
* browse: support --port and --no-browser optionsPeter Wu2016-03-111-3/+7
| | | | | | | Add --port option to override the default port (8000). Add --no-browser option to avoid opening a web browser (useful over SSH). Make the target name optional, using "all" if omitted.
* browse.py: allow port override via environment variablePeter Wu2016-02-251-1/+2
|
* Merge pull request #1100 from nico/docNico Weber2016-02-031-9/+5
|\ | | | | Minor updates to the manual.
| * Minor updates to the manual.Nico Weber2016-02-031-9/+5
| | | | | | | | | | | | | | * Update link to Chromium's ninja docs (fixes #1038) * Update cmake URL to what it redirects to, and mention that ninja is well-supported on all platforms in newer CMake versions. * Let "others" link to the wiki page listing generators.
* | Add support for build statement implicit outputsBrad King2016-02-031-1/+26
|/ | | | | | | | | | | | | | | | | | Some build rules produce outputs that are not mentioned on the command line but that should be part of the build graph. Such outputs should not be named in the `$out` variable. Extend the build statement syntax to support specification of implicit outputs using the syntax `| out1 out2` after the explicit outputs and before the `:`. For example, compilation of a Fortran source file `foo.f90` that defines `MODULE FOO` may now be specified as: rule fc command = f95 -c $in -o $out build foo.o | foo.mod: fc foo.f90 The `foo.mod` file is an implicit output generated by the compiler based on the content of the source file and not mentioned on the command line.
* Merge pull request #1073 from ninja-build/manual-fontNico Weber2015-12-291-6/+0
|\ | | | | use the default font size for manual headings
| * use the default font size for manual headingsEvan Martin2015-12-161-6/+0
| | | | | | | | | | | | The third-level subsection headings were almost indistinguishable from the second-level ones. Fix this by just using the default styling.
* | Merge pull request #1074 from ninja-build/manual-commandNico Weber2015-12-291-6/+24
|\ \ | | | | | | add a section to the manual discussion the command= variable
| * | add a section to the manual discussing the command= variableEvan Martin2015-12-161-6/+24
| |/ | | | | | | | | This includes a mention of using cmd /c on Windows. This would have helped on issue #1070 for example.
* | drop a [horizontal] definition tableEvan Martin2015-11-171-1/+0
| | | | | | | | The two columns of the table run together, making it hard to read.
* | improve docs generation, including PDF outputEvan Martin2015-11-173-4/+36
| | | | | | | | | | | | - Fix the manual build rules (missing the .xsl as an input). - Add a README describing how the docs build works. - Add rules that generate PDF, just 'cause we can.
* | provide a better title for the manualEvan Martin2015-11-171-2/+2
| | | | | | | | In particular, this helps web search engines index it.