Jonathan Sternberg [Fri, 23 Dec 2011 15:02:10 +0000 (10:02 -0500)]
Matching the depfile_parser.in.cc file to properly generate the depfile_parser.cc file that's in version control.
Evan Martin [Thu, 22 Dec 2011 21:31:25 +0000 (13:31 -0800)]
Merge pull request #161 from nico/fix
Let ninja_syntax handle escaped spaces correctly.
Nico Weber [Thu, 22 Dec 2011 20:21:12 +0000 (12:21 -0800)]
Let ninja_syntax handle escaped spaces correctly.
Revert the main loop changes made in
2e7ab7514207ea7faad40faedf3fc9d72b3adf7a,
and add just a few lines to the original main loop to make '$ ' escaping work.
Add several new tests, and make the existing tests pass again.
Evan Martin [Thu, 22 Dec 2011 01:13:25 +0000 (17:13 -0800)]
revert part of c33b198 to fix build of ninja_test
Evan Martin [Tue, 20 Dec 2011 23:29:35 +0000 (15:29 -0800)]
Merge pull request #160 from tfarina/upper-case-error
Capitalize "error" to match with the other utility functions.
Thiago Farina [Tue, 20 Dec 2011 23:14:33 +0000 (21:14 -0200)]
Capitalize "error" to match with the other utility functions.
Fatal and Warning functions already output their strings capitalized,
we were just missing the Error function. So capitalize it now.
Signed-off-by: Thiago Farina <tfarina@chromium.org>
Evan Martin [Tue, 20 Dec 2011 21:59:00 +0000 (13:59 -0800)]
Merge pull request #159 from tfarina/protect-build-log-vars
Protect BuildLog data member variables by making them private.
Thiago Farina [Tue, 20 Dec 2011 21:53:31 +0000 (19:53 -0200)]
Protect BuildLog data member variables by making them private.
They are not accessed outside of BuildLog and there is even a SetConfig function
to set the |config_| variable.
So better to make them private to BuildLog now while nobody is using it outside.
Signed-off-by: Thiago Farina <tfarina@chromium.org>
Evan Martin [Tue, 20 Dec 2011 21:18:53 +0000 (13:18 -0800)]
Merge pull request #158 from tfarina/alphabetize
Put the list of core source files in alphabetical order.
Thiago Farina [Tue, 20 Dec 2011 21:06:01 +0000 (19:06 -0200)]
Put the list of core source files in alphabetical order.
Signed-off-by: Thiago Farina <tfarina@chromium.org>
Evan Martin [Tue, 20 Dec 2011 20:13:11 +0000 (12:13 -0800)]
windows: use GetFileAttributesEx instead of stat
From a Hacker News comment:
"Recent finding, that sped up our systems from 15->3sec on 300,000+ files
filestamp check was to move from _stat to GetFileAttributesEx."
I do recall reading that calls to stat() on Windows were one of the
potential reasons Subversion is so slow on Windows...
Evan Martin [Tue, 20 Dec 2011 19:44:08 +0000 (11:44 -0800)]
gitignore exe files
Evan Martin [Tue, 20 Dec 2011 19:43:57 +0000 (11:43 -0800)]
factor out windows perror equivalent
Evan Martin [Tue, 20 Dec 2011 19:38:56 +0000 (11:38 -0800)]
inline gtest to simplify windows build
Evan Martin [Tue, 20 Dec 2011 19:10:26 +0000 (11:10 -0800)]
fix bad merge
Evan Martin [Tue, 20 Dec 2011 19:01:04 +0000 (11:01 -0800)]
fix mingw cross-compile
Evan Martin [Tue, 20 Dec 2011 18:54:10 +0000 (10:54 -0800)]
rearrange manual to centralize quoting rules
Evan Martin [Tue, 20 Dec 2011 18:40:40 +0000 (10:40 -0800)]
remove weird accidental double-return
Surprised this isn't a compiler warning.
Evan Martin [Tue, 20 Dec 2011 18:33:42 +0000 (10:33 -0800)]
Merge pull request #146 from nornagon/escape-spaces
Escape spaces
Evan Martin [Mon, 19 Dec 2011 19:18:29 +0000 (11:18 -0800)]
adjust depfile test now that parsing is more lax
Evan Martin [Mon, 19 Dec 2011 19:14:35 +0000 (11:14 -0800)]
handle backslashes and isolated colons in depfile parser
The logic was wrong if the input looked like
foo : bar baz
with a space before the colon.
Test from Frances <frances.buontempo@gmail.com>.
Evan Martin [Mon, 19 Dec 2011 18:59:29 +0000 (10:59 -0800)]
split out depfile parser tests into new file
Evan Martin [Thu, 15 Dec 2011 20:24:34 +0000 (12:24 -0800)]
print 'entering directory' when -C is used
This allows Emacs to track what directory you're in.
Patch from Ami Fischman <fischman@chromium.org>.
Evan Martin [Fri, 9 Dec 2011 22:49:30 +0000 (14:49 -0800)]
Merge pull request #153 from polrop/fix-bootstrap
Fix bootstrap
Nicolas Despres [Fri, 9 Dec 2011 15:45:25 +0000 (16:45 +0100)]
Fix 'list' tool.
Nicolas Despres [Fri, 9 Dec 2011 10:05:37 +0000 (11:05 +0100)]
Factor source file listing code in bootstrap script.
Nicolas Despres [Fri, 9 Dec 2011 09:59:35 +0000 (10:59 +0100)]
Fix bootstrap script.
- Make regexp more robust.
- Exclude .in.cc files.
Nicolas Despres [Fri, 9 Dec 2011 09:45:05 +0000 (10:45 +0100)]
Use getter instead of private member.
Fix a compilation error.
Evan Martin [Wed, 7 Dec 2011 20:30:59 +0000 (12:30 -0800)]
performance testing note
Evan Martin [Wed, 7 Dec 2011 20:14:30 +0000 (12:14 -0800)]
remove makefile parsing code, use depfile code instead
Evan Martin [Wed, 7 Dec 2011 20:08:00 +0000 (12:08 -0800)]
use re2c to parse depfiles
Evan Martin [Wed, 7 Dec 2011 18:01:00 +0000 (10:01 -0800)]
refactor EdgeEnv
Evan Martin [Wed, 7 Dec 2011 17:51:14 +0000 (09:51 -0800)]
make Rule::generator_ and restat_ private
Evan Martin [Wed, 7 Dec 2011 17:43:29 +0000 (09:43 -0800)]
make Rule::name_ private
Evan Martin [Wed, 7 Dec 2011 17:41:07 +0000 (09:41 -0800)]
remove unused function
Evan Martin [Wed, 7 Dec 2011 17:38:10 +0000 (09:38 -0800)]
make Node::out_edges_ private
Evan Martin [Wed, 7 Dec 2011 17:35:02 +0000 (09:35 -0800)]
make Node::in_edge_ private
Evan Martin [Wed, 7 Dec 2011 17:27:01 +0000 (09:27 -0800)]
make Node::dirty_ private
Evan Martin [Wed, 7 Dec 2011 16:59:08 +0000 (08:59 -0800)]
more whitespace
Evan Martin [Wed, 7 Dec 2011 16:55:46 +0000 (08:55 -0800)]
merge StatCache into State
I think I had originally imagined StatCache would contain more state,
but at this point it's clear it was just managing a single map, which
could just as well be in the already-small State object.
Evan Martin [Wed, 7 Dec 2011 16:45:16 +0000 (08:45 -0800)]
merge FileStat into Node
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.
Evan Martin [Wed, 7 Dec 2011 16:33:49 +0000 (08:33 -0800)]
refactor to remove Node::ready()
Evan Martin [Wed, 7 Dec 2011 01:32:25 +0000 (17:32 -0800)]
add and use getter for Edge::rule_
Evan Martin [Tue, 6 Dec 2011 17:32:08 +0000 (09:32 -0800)]
move build/install to README
Evan Martin [Tue, 6 Dec 2011 16:26:39 +0000 (08:26 -0800)]
Merge pull request #152 from pcc/clean-depfiles
Have the clean tool remove depfiles
Evan Martin [Tue, 6 Dec 2011 16:25:59 +0000 (08:25 -0800)]
Merge pull request #151 from pcc/restat-depfiles
Use the modification time of the depfile when computing restat_mtime
Peter Collingbourne [Fri, 25 Nov 2011 15:18:49 +0000 (15:18 +0000)]
Have the clean tool remove depfiles
Peter Collingbourne [Sun, 4 Dec 2011 02:51:30 +0000 (02:51 +0000)]
Use the modification time of the depfile when computing restat_mtime
Fixes issue #144.
Peter Collingbourne [Fri, 25 Nov 2011 15:18:03 +0000 (15:18 +0000)]
Factor out Edge::EvaluateDepFile
Evan Martin [Mon, 5 Dec 2011 21:38:31 +0000 (13:38 -0800)]
more whitespace in build output
Evan Martin [Mon, 5 Dec 2011 21:30:38 +0000 (13:30 -0800)]
remove reference to nonexistent file
Evan Martin [Mon, 5 Dec 2011 21:25:56 +0000 (13:25 -0800)]
add help output to clean tool
Evan Martin [Mon, 5 Dec 2011 21:22:09 +0000 (13:22 -0800)]
prettify manual for tools
Evan Martin [Mon, 5 Dec 2011 21:20:49 +0000 (13:20 -0800)]
also spell-check the 'clean' tool; abort on misspelling
Evan Martin [Mon, 5 Dec 2011 20:22:54 +0000 (12:22 -0800)]
minor manual touchups
Evan Martin [Mon, 5 Dec 2011 20:03:04 +0000 (12:03 -0800)]
split out tool list into a separate subcommand
Fits the -h output on one screen again, and allows more whitespace
in both the -h output and the tool list.
Evan Martin [Mon, 5 Dec 2011 19:53:33 +0000 (11:53 -0800)]
disable the 'unused parameter' warning
It was firing too often, and hadn't uncovered any bugs.
Evan Martin [Mon, 5 Dec 2011 18:24:07 +0000 (10:24 -0800)]
Merge pull request #150 from luislavena/mingw-no-visibility
visibility=hidden should not be used for Windows
Evan Martin [Mon, 5 Dec 2011 18:22:12 +0000 (10:22 -0800)]
Merge pull request #149 from luislavena/mingw-static
Use g++'s -static option instead of specific libs
Luis Lavena [Mon, 5 Dec 2011 15:08:47 +0000 (12:08 -0300)]
visibility=hidden should not be used for Windows
While GCC 4.x supports the usage of -fvisibility=hidden and the related
pragmas, usage of it under MinGW is a noop and should not be used.
Instead, __declspec(dllexport/dllimport) should be used instead to
indicate exportable functions.
Since Ninja builds a static library, no functions are exported and
visibility, at least under MinGW, is not an issue.
Luis Lavena [Mon, 5 Dec 2011 14:55:05 +0000 (11:55 -0300)]
Use g++'s -static option instead of specific libs
MinGW g++ recognizes -static as option to avoid the need to specify
individual libraries to be statically linked into the executable.
It also solves the warning of -static-libstdc++ not being recorgnized by
GCC 4.5.2 (TDM build)
Evan Martin [Sun, 4 Dec 2011 21:11:05 +0000 (13:11 -0800)]
fix some minor style issues in RecomputeDirty
Evan Martin [Sun, 4 Dec 2011 21:07:11 +0000 (13:07 -0800)]
when an edge is dirty, mark all outputs dirty
The logic before was like:
for each output:
if edge_dirty or output.dirty:
output.dirty = true
edge_dirty = true
This was wrong in the case where the second output would case the edge
to be dirty; we needed to go back and mark the first output dirty as
well. Fixed by taking two passes: one to compute the dirty state,
then a latter sweep to mark all outputs.
Fixes issue 148.
Evan Martin [Sun, 4 Dec 2011 20:15:27 +0000 (12:15 -0800)]
refactor RecomputeOutputDirty to return true/false for dirty
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.
Evan Martin [Sun, 4 Dec 2011 20:14:28 +0000 (12:14 -0800)]
add a test case from issue 148
Evan Martin [Fri, 2 Dec 2011 05:53:00 +0000 (21:53 -0800)]
windows: don't buffer stdout
Evan Martin [Fri, 2 Dec 2011 05:35:27 +0000 (21:35 -0800)]
HACKING: windows notes
Evan Martin [Fri, 2 Dec 2011 05:34:34 +0000 (21:34 -0800)]
bootstrap.sh: windows (mingw) fixes
- Don't build browse.cc in bootstrap.sh.
- Explicitly call out to Python to run configure.py.
- Run ninja-bootstrap with no arguments to build the default target,
which is "ninja.exe" on Windows.
Evan Martin [Fri, 2 Dec 2011 05:33:33 +0000 (21:33 -0800)]
configure.py: windows updates
- Drop unused 'windows' platform
- Make 'mingw' platform actually work on mingw-on-Windows.
Evan Martin [Fri, 2 Dec 2011 04:39:39 +0000 (20:39 -0800)]
windows: clear process launch structs before using them
Jeremy Apthorp [Mon, 28 Nov 2011 03:27:02 +0000 (14:27 +1100)]
Update ninja_syntax.py and tests to reflect '$ ' syntax.
Jeremy Apthorp [Mon, 28 Nov 2011 03:25:16 +0000 (14:25 +1100)]
Add tests for escaping spaces with '$ '.
Evan Martin [Fri, 25 Nov 2011 07:30:19 +0000 (23:30 -0800)]
Revert "Merge pull request #143 from cipriancraciun/patches/python2"
This reverts commit
38ab41f45ff818b437942b753328a0168914fc86, reversing
changes made to
819d6347b424f583d651b86dd1280605ddb23b88.
Platforms that don't have /usr/bin/python pointing to python2 are broken.
Evan Martin [Tue, 22 Nov 2011 01:21:31 +0000 (17:21 -0800)]
Merge pull request #143 from cipriancraciun/patches/python2
Rename all occurences of `python` to `python2`
Evan Martin [Tue, 22 Nov 2011 01:15:47 +0000 (17:15 -0800)]
Merge pull request #142 from cipriancraciun/patches/custom-cflags-ldflags
Added support for custom CFLAGS and LDFLAGS.
Ciprian Dorin, Craciun [Tue, 22 Nov 2011 00:11:50 +0000 (02:11 +0200)]
Renamed `python` to `python2`.
Ciprian Dorin, Craciun [Wed, 31 Aug 2011 11:28:08 +0000 (14:28 +0300)]
Fixed Python 2 scripts prologue (i.e. `#!/usr/bin/env python2`).
Ciprian Dorin, Craciun [Wed, 31 Aug 2011 11:28:47 +0000 (14:28 +0300)]
Added support for custom CFLAGS and LDFLAGS.
Evan Martin [Mon, 21 Nov 2011 18:16:08 +0000 (10:16 -0800)]
Merge pull request #138 from polrop/fix-warning-in-test
Fix compilation warning in Ninja's test suite.
Nicolas Despres [Mon, 21 Nov 2011 11:52:49 +0000 (12:52 +0100)]
Fix compilation warning in Ninja's test suite.
Jeremy Apthorp [Mon, 21 Nov 2011 03:07:56 +0000 (14:07 +1100)]
Allow '$ ' to escape spaces in identifiers.
Evan Martin [Sun, 20 Nov 2011 00:19:10 +0000 (16:19 -0800)]
Merge pull request #136 from polrop/add-extra-warning
Add -Wextra compilation flags
Nicolas Despres [Sat, 19 Nov 2011 19:22:42 +0000 (20:22 +0100)]
Remove warning triggered by -Wextra on MinGW.
Nicolas Despres [Sat, 19 Nov 2011 15:13:48 +0000 (16:13 +0100)]
Add -Wextra warning flag.
Fix triggered warnings:
- unused parameter
- type qualifiers ignored on function return type
- missing initializer for member
Evan Martin [Sat, 19 Nov 2011 18:24:17 +0000 (10:24 -0800)]
Merge pull request #135 from polrop/fix-mingw
Fix mingw.
Evan Martin [Sat, 19 Nov 2011 18:23:06 +0000 (10:23 -0800)]
Merge pull request #133 from polrop/fix-duplication
Fix duplicated list of profilers.
Nicolas Despres [Sat, 19 Nov 2011 17:54:05 +0000 (18:54 +0100)]
Fix compilation warning with getopt() on MinGW.
Nicolas Despres [Sat, 19 Nov 2011 17:49:38 +0000 (18:49 +0100)]
Fix compilation warning with getopt_long() on MinGW.
Nicolas Despres [Sat, 19 Nov 2011 17:40:21 +0000 (18:40 +0100)]
Use more portable way to get the current process ID.
GetProcessId() is available only since Windows XP. Since
MinGW define WINVER to 0x0400 which is Windows 2000 I think, we have
a compilation error. Using GetCurrentProcessId() instead of
GetProcessId(GetCurrentProcess()) fix this issue.
Nicolas Despres [Sat, 19 Nov 2011 14:48:30 +0000 (15:48 +0100)]
Fix duplicated list of profilers.
Evan Martin [Wed, 16 Nov 2011 21:21:46 +0000 (13:21 -0800)]
Merge pull request #132 from nico/spell
Add spelling suggestions for four cases:
Nico Weber [Wed, 16 Nov 2011 05:38:21 +0000 (21:38 -0800)]
Add spelling suggestions for four cases:
1. For targets, when invoking ninja to build a target.
2. For targets, when doing a "query" command.
3. For command names.
4. For the subcommands of the "targets" command.
Also change CmdTargets() to call LookupNode() instead of GetNode() --
since the result was checked for NULL, that's probably what was intended
here originally.
Evan Martin [Sun, 13 Nov 2011 20:48:32 +0000 (12:48 -0800)]
fix TODO: correct dependencies for inline.sh
Not sure why I just didn't write this right the first time; when running
a script for its output, the script is always an implicit input of the
output.
Nico Weber [Thu, 10 Nov 2011 20:58:00 +0000 (12:58 -0800)]
Add a EditDistance() function based on the one in llvm/lib/Support/StringRef.cpp.
Evan Martin [Sun, 13 Nov 2011 20:16:09 +0000 (12:16 -0800)]
Merge pull request #131 from secondplanet/patch-1
Improvements to ninja-mode
Humza [Sun, 13 Nov 2011 16:30:10 +0000 (11:30 -0500)]
Improvements to ninja-mode
* provide ninja-mode feature
* highlight rule names
Evan Martin [Sun, 6 Nov 2011 00:02:06 +0000 (17:02 -0700)]
Merge pull request #127 from tiresdonexits/master
Minor code change to address a warning in g++ 4.6.
Jonathan Sternberg [Sat, 5 Nov 2011 19:58:51 +0000 (15:58 -0400)]
Added a cast to NULL to remove a warning issues by g++ 4.6.
Evan Martin [Fri, 4 Nov 2011 23:31:35 +0000 (16:31 -0700)]
Merge pull request #123 from pcc/commands-tool
Add a "commands" tool
Peter Collingbourne [Mon, 3 Oct 2011 03:02:11 +0000 (04:02 +0100)]
Add a "commands" tool
This tool performs a post-order traversal of the build graph, starting
from a list of targets specified on the command line, and for each
build statement encountered, prints the evaluated command line.
Use cases include:
- Generating input for a tool which needs to know the full command line
for every command invoked during a build. Many static analysis
and indexing tools require this information.
- Generating a build script which does not depend on Ninja.
For example, such a script could be used by Ninja to bootstrap
itself.