| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
posix_spawn_* calls don't set errno, use the return value.
|
| | |
|
|\ \
| | |
| | | |
Silence GCC -Wimplicit-fallthrough warnings
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Borrow macro implementation from OpenSSL code.
Add the macro after each fallthrough switch case to indicate our
intention to the compiler. This silences GCC -Wimplicit-fallthrough
warnings, which is implied by GCC 7.x -Wextra.
|
|/ / |
|
| |
| |
| |
| |
| | |
This reverts commit 6c864097ef11da366fb4070e6ab9f34d6a293766
and fixes the broken Appveyor builds on GitHub.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Lexer::ReadIdent() now sets last_token_ before returning, like
Lexer::ReadEvalString() does. So all "expected identifiers" and things
that call ReadIdent (pool parser, rule parser, let parser, code parsing
the rule name after a : in a build line) now point the "^ near here" at
what was there instead of the previous last_token
According to manifest_parser_perftest, this is perf-neutral.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
You can still opt out of this by passing `-w dupbuild=warn`.
But if you're getting this diagnostic, your build files are incorrect
and you should ideally just fix them.
This is step 3 on https://github.com/ninja-build/ninja/issues/931
I sent an RfC to ninja-build a few months ago; nobody objected.
|
|\ \
| | |
| | | |
Fix building on Windows in UNICODE mode
|
| |/ |
|
|\ \
| | |
| | | |
[compdb] Expand response files inline based on a switch.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
References to response files in a clang compile_commands.json file can
be tricky to deal with when tooling expects all the command flags to be
present in the 'command' field.
This change introduces a '-x' option to '-t compdb' that will expand
@rspfile style response file invocations inline.
E.g.
```sh
$ ninja -t compdb cc
[
{
"directory": "/src/foo",
"command": "cc -foo -bar @foo.obj.rsp",
"file": "foo.cc"
}
]
$ ninja -t compdb -x cc
[
{
"directory": "/src/foo",
"command": "cc -foo -bar foo.cc",
"file": "foo.cc"
}
]
```
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Developers tend to blame the last printed line when a build takes too
long. Unfortunately, when building concurrently, the last printed line
may have actually finished a long time ago. Under the current system,
ninja does not update the status line to reflect what jobs are still
running. This change makes ninja always print the oldest still running job
instead. In other words, the likely build bottlenecks.
Patch from David Zarzycki, originally uploaded at #1320.
|
|\ \ \
| | | |
| | | | |
Track in Plan whether wanted edges have been scheduled
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Refactor the `want_` map to track for wanted edges whether they have
been scheduled or not. This gives `ScheduleWork` a direct place to keep
this information, making the logic more robust and easier to follow. It
also future-proofs `ScheduleWork` to avoid repeat scheduling if it is
called after an edge has been removed from `ready_` by `FindWork`.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Ninja is supposed to be able to build as C++98 so it can run on old
systems, but it should also be possible to optionally build it with
newer dialects.
|
|\ \ \ \
| | | | |
| | | | | |
Flush changes into .ninja_log right away.
|
| | |_|/
| |/| | |
|
|\ \ \ \
| |_|_|/
|/| | | |
Fix disk_interface_test.cc on Windows for 64-bit timestamp
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Make sure that stat on Windows, both with and without cache, returns
"missing file" when running stat on notadir/foo where notadir is a
file.
|
| |/ /
| | |
| | |
| | |
| | | |
subdir/subsubdir/.. seems to get the time of subdir/subsubdir on NTFS
(Windows 7), not the time of subdir.
|
| | |
| | |
| | |
| | |
| | |
| | | |
This corrects an inconsistency where build targets were canonicalized
but clean targets were not. For example you could build ./foo but not
clean ./foo.
|
|\ \ \
| | | |
| | | | |
Don't clean up after ourselves when exiting.
|
| |/ /
| | |
| | |
| | |
| | |
| | | |
Destruction of NinjaMain can be an expensive operation when dealing
with stupidly large ninjafiles. exit directly instead of returning out
of real_main to avoid doing so.
|
|\ \ \
| | | |
| | | | |
Fix build on Solaris.
|
| |/ /
| | |
| | |
| | | |
Solaris also does not define struct stat's st_mtimensec field.
|
|\ \ \
| | | |
| | | | |
Update Usage to show "-k 0" behavior
|
| |/ /
| | |
| | | |
For "-k N", N==0 is interpreted as infinite. It's useful but not documented in the help, unfortunately.
|
|/ / |
|
|\ \
| | |
| | | |
Use high-resolution timestamps
|
| | | |
|
| | |
| | |
| | |
| | | |
This prevents overflow on Windows where 'long' is not 64-bit.
|
| | |
| | |
| | |
| | |
| | | |
Add parentheses so that constant does not overflow; include inttypes.h
when using MinGW to get the proper macros.
|
| | |
| | |
| | |
| | |
| | | |
This uses the macros as defined by the man page, which, as noted in the
comments, are defined correctly on as many libc's that I could check.
|
| | |
| | |
| | |
| | |
| | | |
Read and write the timestamp as two separate 32-bit integers in a fixed
order to prevent any issues with alignment or byte order.
|
| | |
| | |
| | |
| | |
| | | |
This is needed on older compilers/stdlibs such as on Ubuntu Precise
which is used on Travis.
|
| | |
| | |
| | |
| | |
| | | |
Not sure why the old way works in newer compilers; maybe they just
pre-define these types by defaulting to a newer standard.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This uses nanoseconds on POSIX (±~292 years) and 100-ns increments on
Windows (±~29247 years).
The fallbacks to different structure fields is the only thing grabbed
from #337, with a slight modification in implementation.
|
| |/
| |
| |
| | |
This prepares it for higher-resolution timestamps.
|
|\ \
| | |
| | | |
Fix potential buffer overrun
|
| |/
| |
| |
| |
| | |
This commit rearranges record size comparison and fread() to make sure
fread() only reads the data that can fit into the buffer.
|
|/ |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since commit v1.8.0^2~3^2~1 (Teach RecomputeDirty to detect cycles in
the build graph, 2015-11-13) we correctly reject self-referencing phony
build statements like
build a: phony a
as cycles. Unfortunately this breaks support for CMake 2.8.12.x and
3.0.x because those versions incorrectly produce edges of this form
(that we used to tolerate). In order to preserve compatibility with
those CMake versions we need to restore tolerance of these edges.
Add a special case to the manifest parser to filter out self-referencing
inputs of phony edges of the form produced by those CMake versions.
Warn by default, but add a `-w phonycycle={err,warn}` option to make it
an error.
Fixes: #1322
|
|
|
|
|
|
| |
This will allow more options to be added without updating everywhere
that constructs a ManifestParser. Also extend the AssertParse function
to take the options so tests can control them.
|
| |
|
| |
|
| |
|