| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|\
| |
| | |
The 'graph' tool now generates a graph based on all root nodes when called without any target. The build.ninja file is also adjusted so that we get the whole graph generated (including the doxygen part).
|
| |
| |
| |
| |
| | |
This way we can see the 'doxygen' target and also some object file we
forgot to add as input of the link rule.
|
| |
| |
| |
| | |
This way we can generate the complete graph.
|
|\ \
| |/
| | |
adds the -C option and the following tools: targets, rules and clean
|
| |
| |
| |
| | |
It removes built files either by rule or target or everything.
|
| |
| |
| |
| |
| | |
It can be useful in conjunction with the 'targets' tool for writing shell
completion scripts and when debugging.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This tool list targets by depth or by rule. It can be useful:
- for shell completion script ;
- to know what are the primary targets: ninja -t targets depth 1 ;
- to know targets that are linked: ninja -t rule link ;
- when debugging.
It works by first listing the root nodes and then following the input nodes
of their in edge.
|
| |
| |
| |
| |
| |
| | |
Can be useful when calling ninja from a script or a code editor or in many
other occasions. It costs nothing and does not bring more complexity, so
I think we can afford it.
|
|\ \
| |/
| | |
Minor bug fix
|
| | |
|
| |
| |
| |
| | |
Adjust tools options parser and documentation.
|
| |
| |
| |
| |
| | |
It has been introduced by 761a3c when ManifestParser::set_root() existed.
It is no longer the case so we can save some time querying it now.
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
This way we get the error message prefixed by the program name. It helps
while debugging.
|
| |
| |
| |
| |
| |
| | |
It make it easier while debugging to know who is reporting the error:
Ninja itself or one of the command called by Ninja during the build
process or one of the generator which called Ninja.
|
|/
|
|
|
| |
E.g. when parsing "foo = ${bar", point at the correct location of
the missing curly brace.
|
| |
|
|
|
|
|
| |
This will make the build log compaction work on Windows.
It will also make the tests no longer leave a temp log file around.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Null build of Chrome:
before I added extra calls to CanonicalizePath: 1.25s.
with extra calls to CanonicalizePath: 1.35s.
with new CanonicalizePath: 1.05s.
And now CanonicalizePath isn't hot on profiles anymore.
|
| |
|
|\ |
|
| |
| |
| |
| | |
This way it does not appear in the $in variables.
|
| |
| |
| |
| | |
Now it prints its output file.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Before the main page was an order-only dependency of the doxygen target.
Thus, modification in the README did not triggers rebuild of the doxygen
target as it ought to be.
We have several ways to fix this issue:
1) Make the '$builddir/doxygen_mainpage' target an explicit dependency:
build $builddir/doxygen_mainpage: doxygen_mainpage \
README HACKING COPYING | $doxygen_mainpage_generator
build doxygen: doxygen doxygen.config $builddir/doxygen_mainpage
2) Duplicate the explicit dependencies of the '$builddir/doxygen_mainpage'
target as implicit dependencies of the 'doxygen' target and keep the
'$builddir/doxygen_mainpage' target as an order-only dependency:
build $builddir/doxygen_mainpage: doxygen_mainpage \
README HACKING COPYING | $doxygen_mainpage_generator
build doxygen: doxygen doxygen.config \
| README HACKING COPYING \
|| $builddir/doxygen_mainpage
I chose the first option since the doxygen executable only cares about its
first argument. But it would not be the case for all commands. So I
think introducing "slice" support for the $in and $out variables would be
great. This way I could rewrite the 'doxygen' rule this way:
rule doxygen
command = doxygen $in[0]
description = DOXYGEN $in[0]
Note that using variables to avoid duplication does not work since the
three files are seen as a single one:
doxygen_deps = README HACKING COPYING
build $builddir/doxygen_mainpage: doxygen_mainpage \
$doxygen_deps | $doxygen_mainpage_generator
build doxygen: doxygen doxygen.config \
| $doxygen_deps \
|| $builddir/doxygen_mainpage
Maybe Ninja's philosophy expects the generators to generate the second
option.
|
| |
| |
| |
| |
| | |
It helps when debugging compilation output to know who is speaking even if
Ninja buffers command output contrary to make.
|
| |
| |
| |
| | |
Otherwise the script is stopped because errexit option is set.
|
| | |
|
| |
| |
| |
| | |
Reviewed by Evan Martin.
|
| |
| |
| |
| | |
Reviewed by Evan Martin.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
I'm not entirely happy with my solution. I think Ninja should
always use canonicalized paths internally, so we should canonicalize
all paths as we receive them (from the command line and from build
files). But there are other places where we pass paths around
(like in all the tool commands) and I don't want to add manual calls
to canonicalize in each.
Perhaps the longer-term solution is to add some sort of
GetNodeCanonicalize() to State and then make all of the functions that
work with paths as strings (like Builder::AddTarget or RunBrowsePython)
instead only accept a Node*.
|
| | |
|
| | |
|
|/ |
|
|\ |
|
| | |
|
| | |
|
|\ \
| |/
| |
| |
| |
| | |
Conflicts:
src/util.cc
src/util.h
|
| |\ |
|