platform/upstream/ninja.git
12 years agoMerge pull request #330 from sgraham/win32-hash-build
Evan Martin [Fri, 15 Jun 2012 22:04:25 +0000 (15:04 -0700)]
Merge pull request #330 from sgraham/win32-hash-build

fix windows build

12 years agoimprove test
Scott Graham [Fri, 15 Jun 2012 21:57:22 +0000 (14:57 -0700)]
improve test

12 years agoadd $in_newline
Scott Graham [Fri, 15 Jun 2012 21:48:43 +0000 (14:48 -0700)]
add $in_newline

12 years agofix windows build
Scott Graham [Fri, 15 Jun 2012 21:28:23 +0000 (14:28 -0700)]
fix windows build

12 years agoMerge pull request #329 from nico/hash2
Evan Martin [Fri, 15 Jun 2012 20:45:37 +0000 (13:45 -0700)]
Merge pull request #329 from nico/hash2

Only store command hashes in the build log.

12 years agoAdd a hash collision benchmark.
Nico Weber [Fri, 15 Jun 2012 16:50:06 +0000 (09:50 -0700)]
Add a hash collision benchmark.

12 years agoOnly store command hashes in the build log.
Nico Weber [Fri, 15 Jun 2012 04:52:17 +0000 (21:52 -0700)]
Only store command hashes in the build log.

.build_log load time 350ms -> 17ms, filesize 197MB -> 1.6MB on
Mac. On Windows, it's 500ms -> 20ms.

Makes the build log a lot less useful for scripts, but there could
be a tool for use cases that need log information. A prototype of
such a tool is in https://github.com/nico/ninja/commit/1b243d311

The hash function is 64bit murmurhash2. Assuming that that different
commands get the same hash only by chance, it's is very unlikely
for two different commands to hash to the same value with a 64bit
hash.

12 years agoMerge pull request #328 from nico/canonperf
Evan Martin [Fri, 15 Jun 2012 19:40:05 +0000 (12:40 -0700)]
Merge pull request #328 from nico/canonperf

add canon_perftest

12 years agoallow '(' and ')' in depfile paths
Evan Martin [Tue, 12 Jun 2012 22:11:22 +0000 (15:11 -0700)]
allow '(' and ')' in depfile paths

Fixes issue #327.

12 years agoadd a note to HACKING about how to get gtest
Evan Martin [Tue, 12 Jun 2012 21:54:34 +0000 (14:54 -0700)]
add a note to HACKING about how to get gtest

12 years agofix a typo in a test name
Evan Martin [Tue, 12 Jun 2012 21:49:40 +0000 (14:49 -0700)]
fix a typo in a test name

12 years agoMerge pull request #325 from luvit/fix-path-magic
Evan Martin [Tue, 12 Jun 2012 03:03:56 +0000 (20:03 -0700)]
Merge pull request #325 from luvit/fix-path-magic

bootstrap: fix path magic on windows

12 years agobootstrap: fix path magic on windows
Brandon Philips [Mon, 11 Jun 2012 17:19:23 +0000 (10:19 -0700)]
bootstrap: fix path magic on windows

It was reported that argv[0] doesn't get set on windows. Some research
showed that using abspath(__filename__) should accomplish this.

12 years agoMerge pull request #323 from luvit/bootstrap-from-cwd
Evan Martin [Sun, 10 Jun 2012 07:45:59 +0000 (00:45 -0700)]
Merge pull request #323 from luvit/bootstrap-from-cwd

bootstrap: chdir to bootstrap's directory

12 years agobootstrap: chdir to bootstrap's directory
Brandon Philips [Sun, 10 Jun 2012 01:38:50 +0000 (18:38 -0700)]
bootstrap: chdir to bootstrap's directory

When integrating ninja into luvit I naively tried calling:

    ./tools/ninja/bootstrap.py

This broke because bootstrap expects you to be in the ninja directory
when you call it. This patch makes it possible to run bootstrap.py like
above and have it work.

12 years agoMerge pull request #306 from nico/winunbreakconf
Evan Martin [Thu, 7 Jun 2012 23:03:01 +0000 (16:03 -0700)]
Merge pull request #306 from nico/winunbreakconf

Strip leading whitespace from commands on Windows.

12 years agoFix configure.py on windows, which does not permit a leading space.
Nico Weber [Tue, 5 Jun 2012 03:23:14 +0000 (20:23 -0700)]
Fix configure.py on windows, which does not permit a leading space.

12 years agoMerge pull request #311 from nico/cleanups
Evan Martin [Mon, 4 Jun 2012 17:16:39 +0000 (10:16 -0700)]
Merge pull request #311 from nico/cleanups

Cleanups

12 years agoadd canon_perftest
Nico Weber [Sun, 3 Jun 2012 05:58:26 +0000 (22:58 -0700)]
add canon_perftest

12 years agoMerge pull request #321 from nico/diff
Evan Martin [Sat, 2 Jun 2012 23:56:25 +0000 (16:56 -0700)]
Merge pull request #321 from nico/diff

Fix a bug that caused total_time to always be -1.

12 years agoRemove code that was never executed.
Nico Weber [Fri, 1 Jun 2012 21:00:32 +0000 (14:00 -0700)]
Remove code that was never executed.

total_time was always -1, because it computed a pointer difference,
not a time difference (should've been |*end_time - *start_time|).

12 years agoMerge pull request #320 from nico/cleanup
Evan Martin [Sat, 2 Jun 2012 17:20:09 +0000 (10:20 -0700)]
Merge pull request #320 from nico/cleanup

Remove unused variable last_update_millis_.

12 years agoMerge pull request #319 from nico/vimp
Evan Martin [Sat, 2 Jun 2012 17:18:58 +0000 (10:18 -0700)]
Merge pull request #319 from nico/vimp

Make `:set spell` only check spelling in comments. Patch from Thilo Six ...

12 years agoRemove unused variable last_update_millis_.
Nico Weber [Fri, 1 Jun 2012 20:50:39 +0000 (13:50 -0700)]
Remove unused variable last_update_millis_.

12 years agoMake `:set spell` only check spelling in comments. Patch from Thilo Six <T.Six@gmx...
Nico Weber [Fri, 1 Jun 2012 17:56:41 +0000 (10:56 -0700)]
Make `:set spell` only check spelling in comments. Patch from Thilo Six <T.Six@gmx.de>!

12 years agoMerge pull request #318 from jsternberg/master
Evan Martin [Fri, 1 Jun 2012 04:24:11 +0000 (21:24 -0700)]
Merge pull request #318 from jsternberg/master

Missing/unused header files

12 years agoMissing header file for "getenv".
Jonathan Sternberg [Thu, 31 May 2012 18:36:30 +0000 (14:36 -0400)]
Missing header file for "getenv".

12 years agoRemoving unused sys/termios.h header.
Jonathan Sternberg [Wed, 30 May 2012 13:46:20 +0000 (09:46 -0400)]
Removing unused sys/termios.h header.

12 years agoHeader guards were missing from some header files.
Jonathan Sternberg [Mon, 28 May 2012 02:09:35 +0000 (22:09 -0400)]
Header guards were missing from some header files.

12 years agoNo need to write 'struct' before type name when declaraing variables in C++.
Thiago Farina [Wed, 23 May 2012 19:17:30 +0000 (16:17 -0300)]
No need to write 'struct' before type name when declaraing variables in C++.

Signed-off-by: Thiago Farina <tfarina@chromium.org>
12 years agoMerge pull request #314 from ehird/master
Evan Martin [Wed, 23 May 2012 17:56:49 +0000 (10:56 -0700)]
Merge pull request #314 from ehird/master

Use subprocess.call for Python 2.4 compatibility

12 years agoUse subprocess.call for Python 2.4 compatibility
Elliott Hird [Wed, 23 May 2012 13:58:49 +0000 (14:58 +0100)]
Use subprocess.call for Python 2.4 compatibility

12 years agoMerge pull request #312 from nico/vimfile
Evan Martin [Tue, 15 May 2012 05:28:45 +0000 (22:28 -0700)]
Merge pull request #312 from nico/vimfile

vim syntax file: Highlight ninja comments.

12 years agovim syntax file: Highlight ninja comments.
Nico Weber [Mon, 14 May 2012 04:34:58 +0000 (21:34 -0700)]
vim syntax file: Highlight ninja comments.

12 years agoMinor spelling fixes in manual.
Nico Weber [Sun, 13 May 2012 01:27:49 +0000 (18:27 -0700)]
Minor spelling fixes in manual.

12 years agocomment fix
Nico Weber [Sun, 6 May 2012 01:18:43 +0000 (18:18 -0700)]
comment fix

12 years agoMerge pull request #310 from nico/landreader
Evan Martin [Thu, 10 May 2012 15:19:14 +0000 (08:19 -0700)]
Merge pull request #310 from nico/landreader

Speed up build log reading (0.5s on Win, 0.1s on Mac, 30ms on Linux)

12 years agoMerge pull request #309 from nico/buildlogtest
Evan Martin [Thu, 10 May 2012 15:15:15 +0000 (08:15 -0700)]
Merge pull request #309 from nico/buildlogtest

Add more tests for BuildLog.

12 years agoSwitch LineReader from fgets() to just fread().
Nico Weber [Thu, 10 May 2012 05:20:52 +0000 (22:20 -0700)]
Switch LineReader from fgets() to just fread().

fgets() needs to search for a \n in the input, and LineReader's
strstr() did the same work again. By using fread() directly, this
duplicate work can be saved.

(I tried using readline() / fgetln() for the same saving, but those
functions are not standard, and were slower than the code in this CL.)

Results from running build_log_perftest, on OS X:
Before: min 369ms  max 372ms  avg 370.4ms
After:  min 243ms  max 247ms  avg 244.8ms

On Windows:
Before: min 796ms  max 904ms  avg 858.0ms
After:  min 359ms  max 375ms  avg 371.4ms

On Linux:
Before: min 161ms  max 169ms  avg 164.8ms
Before: min 130ms  max 137ms  avg 132.6ms

12 years agoPull BuildLog line reading into its own class. No performance or behavior change.
Nico Weber [Thu, 10 May 2012 05:13:58 +0000 (22:13 -0700)]
Pull BuildLog line reading into its own class. No performance or behavior change.

12 years agoAdd a BuildLog test that checks that very long command liens don't crash.
Nico Weber [Thu, 10 May 2012 03:25:48 +0000 (20:25 -0700)]
Add a BuildLog test that checks that very long command liens don't crash.

12 years agoAdd a BuildLog test that checks duplicate version headers don't crash.
Nico Weber [Thu, 10 May 2012 03:25:07 +0000 (20:25 -0700)]
Add a BuildLog test that checks duplicate version headers don't crash.

12 years agoMerge pull request #307 from sgraham/nul-input
Evan Martin [Wed, 9 May 2012 19:48:45 +0000 (12:48 -0700)]
Merge pull request #307 from sgraham/nul-input

pass subprocesses handle to nul device rather than null handle

12 years agopass subprocesses handle to nul device rather than null handle
Scott Graham [Wed, 9 May 2012 19:30:58 +0000 (12:30 -0700)]
pass subprocesses handle to nul device rather than null handle

12 years agoMerge pull request #305 from nico/winperftest
Evan Martin [Wed, 9 May 2012 04:25:28 +0000 (21:25 -0700)]
Merge pull request #305 from nico/winperftest

Make parser_perftest and build_log_perftest link on Windows.

12 years agoMake parser_perftest and build_log_perftest link on Windows.
Nico Weber [Wed, 9 May 2012 03:40:00 +0000 (20:40 -0700)]
Make parser_perftest and build_log_perftest link on Windows.

12 years agoMerge pull request #304 from nico/perftest
Evan Martin [Wed, 9 May 2012 02:40:21 +0000 (19:40 -0700)]
Merge pull request #304 from nico/perftest

Add a BuildLog loading perftest.

12 years agoAdd a BuildLog loading perftest.
Nico Weber [Tue, 8 May 2012 22:50:24 +0000 (15:50 -0700)]
Add a BuildLog loading perftest.

12 years agoinclude version number
Evan Martin [Mon, 7 May 2012 04:47:46 +0000 (21:47 -0700)]
include version number

12 years agoclarify what i mean by "policy"
Evan Martin [Mon, 7 May 2012 15:53:26 +0000 (08:53 -0700)]
clarify what i mean by "policy"

12 years agoMerge pull request #301 from nico/logfix
Evan Martin [Tue, 8 May 2012 16:02:59 +0000 (09:02 -0700)]
Merge pull request #301 from nico/logfix

Don't write ninja log header to log on every build on Windows.

12 years agoDon't write ninja log header to log on every build on Windows.
Nico Weber [Tue, 8 May 2012 15:37:27 +0000 (08:37 -0700)]
Don't write ninja log header to log on every build on Windows.

12 years agoMerge pull request #297 from nico/colorclang
Evan Martin [Mon, 7 May 2012 04:36:45 +0000 (21:36 -0700)]
Merge pull request #297 from nico/colorclang

Produce colored diagnostics when building ninja with clang.

12 years agoMerge pull request #299 from tfarina/explicit-ctors
Evan Martin [Mon, 7 May 2012 04:23:49 +0000 (21:23 -0700)]
Merge pull request #299 from tfarina/explicit-ctors

views: Mark single-argument constructors as explicit.

12 years agoviews: Mark single-argument constructors as explicit.
Thiago Farina [Sun, 6 May 2012 22:31:16 +0000 (19:31 -0300)]
views: Mark single-argument constructors as explicit.

This was reported by cpplint as:

python ~/depot_tools/cpplint.py 2>&1 | grep -v "Done processing" | grep explicit

Signed-off-by: Thiago Farina <tfarina@chromium.org>
12 years agoMerge pull request #298 from tfarina/build-log-string
Evan Martin [Sun, 6 May 2012 21:00:09 +0000 (14:00 -0700)]
Merge pull request #298 from tfarina/build-log-string

No need to convert log_path to c-string. Two places.

12 years agoNo need to convert log_path to c-string. Two places.
Thiago Farina [Sun, 6 May 2012 20:37:46 +0000 (17:37 -0300)]
No need to convert log_path to c-string. Two places.

Signed-off-by: Thiago Farina <tfarina@chromium.org>
12 years agoProduce colored diagnostics when building ninja with clang.
Nico Weber [Fri, 4 May 2012 15:44:30 +0000 (08:44 -0700)]
Produce colored diagnostics when building ninja with clang.

This can be disabled by having -fno-color-diagnostics in CFLAGS,
or setting TERM to dumb.

12 years agomention reactos
Evan Martin [Fri, 4 May 2012 23:07:37 +0000 (16:07 -0700)]
mention reactos

12 years agomention platform support
Evan Martin [Fri, 4 May 2012 23:04:59 +0000 (16:04 -0700)]
mention platform support

12 years agoMerge pull request #296 from nico/confenv
Evan Martin [Fri, 4 May 2012 21:50:16 +0000 (14:50 -0700)]
Merge pull request #296 from nico/confenv

Let configure.py remember its environment for rerunning.

12 years agoMerge pull request #294 from nico/fastercanonpath
Evan Martin [Fri, 4 May 2012 21:46:05 +0000 (14:46 -0700)]
Merge pull request #294 from nico/fastercanonpath

Make CanonicalizePath() 47% faster on mac, 37% faster on linux.

12 years agoFirst check for string end, then dereference. (5ms more expensive, heh.)
Nico Weber [Fri, 4 May 2012 21:25:32 +0000 (14:25 -0700)]
First check for string end, then dereference. (5ms more expensive, heh.)

12 years agoDo not access os.environ directly.
Nico Weber [Fri, 4 May 2012 21:20:33 +0000 (14:20 -0700)]
Do not access os.environ directly.

12 years agoLet configure.py remember its environment for rerunning.
Nico Weber [Fri, 4 May 2012 15:33:46 +0000 (08:33 -0700)]
Let configure.py remember its environment for rerunning.

Without this, CXX is lost when ninja decides that it's time to
regenerate build.ninja, which makes performance tweaking surprising.

12 years agoDon't walk path components twice. Speeds up CanonicalizePath() 115ms (285ms -> 170ms).
Nico Weber [Fri, 4 May 2012 01:18:03 +0000 (18:18 -0700)]
Don't walk path components twice. Speeds up CanonicalizePath() 115ms (285ms -> 170ms).

12 years agoReorder a few lines, no functionality (or perf) change.
Nico Weber [Fri, 4 May 2012 01:15:15 +0000 (18:15 -0700)]
Reorder a few lines, no functionality (or perf) change.

12 years agoSkip single '/' characters earlier in the loop. 300ms -> 285ms.
Nico Weber [Fri, 4 May 2012 01:14:34 +0000 (18:14 -0700)]
Skip single '/' characters earlier in the loop. 300ms -> 285ms.

12 years agoSpeed up CanonicalizePath() 6.8% (322ms -> 300ms for chrome empty build).
Nico Weber [Thu, 3 May 2012 23:13:40 +0000 (16:13 -0700)]
Speed up CanonicalizePath() 6.8% (322ms -> 300ms for chrome empty build).

12 years agoclarify a flag in configure.py
Evan Martin [Wed, 2 May 2012 03:46:34 +0000 (20:46 -0700)]
clarify a flag in configure.py

(The -g flag is always on, --debug just adds e.g. libstdc++'s extra
debugging features.)

Related to issue #286.

12 years agoadd $: to docs
Evan Martin [Fri, 27 Apr 2012 20:16:14 +0000 (13:16 -0700)]
add $: to docs

12 years agoMerge pull request #291 from nico/ocd
Evan Martin [Wed, 2 May 2012 03:34:21 +0000 (20:34 -0700)]
Merge pull request #291 from nico/ocd

Fix layout width in ninja_syntax.py.

12 years agoMerge pull request #290 from nico/metrics
Evan Martin [Wed, 2 May 2012 03:33:41 +0000 (20:33 -0700)]
Merge pull request #290 from nico/metrics

Add .ninja_log load time to metrics.

12 years agoMerge pull request #284 from nico/fixwinbuild
Evan Martin [Wed, 2 May 2012 03:30:17 +0000 (20:30 -0700)]
Merge pull request #284 from nico/fixwinbuild

Fix Windows build.

12 years agoMerge pull request #283 from tfarina/string-ampersand
Evan Martin [Wed, 2 May 2012 03:29:57 +0000 (20:29 -0700)]
Merge pull request #283 from tfarina/string-ampersand

Put & operator with the type rather than the variable name.

12 years agoFix layout width in ninja_syntax.py.
Nico Weber [Wed, 2 May 2012 01:26:51 +0000 (18:26 -0700)]
Fix layout width in ninja_syntax.py.

The last line would sometimes be needlessly longer than the layout
width. One example is line 67 in the build.ninja generated by
ninja's own configure.py: Before this patch, ninja_syntax would
create a 81 character line.

12 years agoAdd .ninja_log load time to metrics.
Nico Weber [Tue, 1 May 2012 15:42:35 +0000 (08:42 -0700)]
Add .ninja_log load time to metrics.

On my system, it takes 22% of the empty build time for chrome.

12 years agoMerge pull request #288 from nico/buildfix
Evan Martin [Tue, 1 May 2012 05:35:58 +0000 (22:35 -0700)]
Merge pull request #288 from nico/buildfix

ninja_syntax.build() returns a list, not a single string.

12 years agoninja_syntax.build() returns a list, not a single string.
Nico Weber [Tue, 1 May 2012 03:15:30 +0000 (20:15 -0700)]
ninja_syntax.build() returns a list, not a single string.

Fixes 'multiple rules' warnings on mac/linux.

12 years agoMerge pull request #285 from nico/winninjatest
Evan Martin [Mon, 30 Apr 2012 16:22:19 +0000 (09:22 -0700)]
Merge pull request #285 from nico/winninjatest

Make it possible to write `ninja ninja_test` on windows (as opposed to `ninja ninja_test.exe`). Also `ninja ninja`.

12 years agoMerge pull request #287 from nico/gtestnortti
Evan Martin [Mon, 30 Apr 2012 16:21:32 +0000 (09:21 -0700)]
Merge pull request #287 from nico/gtestnortti

Fix ninja_test build with clang, build without rtti on windows.

12 years agoExplicitly pass -DGTEST_HAS_RTTI to fix building ninja_test with clang.
Nico Weber [Mon, 30 Apr 2012 15:40:34 +0000 (08:40 -0700)]
Explicitly pass -DGTEST_HAS_RTTI to fix building ninja_test with clang.

12 years agoBuild without RTTI on windows (/GR-), saves 1kB and is consisten with linux/mac.
Nico Weber [Mon, 30 Apr 2012 15:40:12 +0000 (08:40 -0700)]
Build without RTTI on windows (/GR-), saves 1kB and is consisten with linux/mac.

12 years agoProvide 'ninja' as alias for 'ninja.exe' too. Tidy up.
Nico Weber [Mon, 30 Apr 2012 15:11:21 +0000 (08:11 -0700)]
Provide 'ninja' as alias for 'ninja.exe' too. Tidy up.

12 years agoProvide 'ninja_test' as alias for 'ninja_test.exe' on windows.
Nico Weber [Mon, 30 Apr 2012 15:06:28 +0000 (08:06 -0700)]
Provide 'ninja_test' as alias for 'ninja_test.exe' on windows.

12 years agoFix Windows build.
Nico Weber [Mon, 30 Apr 2012 15:04:10 +0000 (08:04 -0700)]
Fix Windows build.

12 years agoPut & operator with the type rather than the variable name.
Thiago Farina [Sat, 28 Apr 2012 18:21:37 +0000 (15:21 -0300)]
Put & operator with the type rather than the variable name.

Signed-off-by: Thiago Farina <tfarina@chromium.org>
12 years agoMerge pull request #274 from polrop/max_load_average
Evan Martin [Sat, 28 Apr 2012 17:56:38 +0000 (10:56 -0700)]
Merge pull request #274 from polrop/max_load_average

Max load average

12 years agoemacs: hook up ninja-mode to extension
Evan Martin [Sat, 28 Apr 2012 16:06:28 +0000 (09:06 -0700)]
emacs: hook up ninja-mode to extension

12 years agoMerge pull request #282 from iwadon/fix-link-to-gplus
Evan Martin [Sat, 28 Apr 2012 05:59:39 +0000 (22:59 -0700)]
Merge pull request #282 from iwadon/fix-link-to-gplus

Fix a link to Google+

12 years agoFix a link to Google+.
Hiroyuki Iwatsuki [Sat, 28 Apr 2012 01:57:06 +0000 (10:57 +0900)]
Fix a link to Google+.

12 years agorearrange the manual
Evan Martin [Fri, 27 Apr 2012 15:14:28 +0000 (08:14 -0700)]
rearrange the manual

My goals were:
- shorten the introductory text, hopefully quickly answering the "why?"
  question first.
- put the information relevant to ninja users (e.g. people using CMake
  who don't especially care about ninja) next, at the beginning.
- consolidate the "generating ninja files" text below.

12 years agomanual: limit width to 45em
Evan Martin [Fri, 27 Apr 2012 15:19:35 +0000 (08:19 -0700)]
manual: limit width to 45em

I had a local user stylesheet that was doing this for all sites
so I hadn't noticed how bad it was!

12 years agosuggest ninja -h when someone runs 'ninja help'
Evan Martin [Thu, 26 Apr 2012 15:02:15 +0000 (08:02 -0700)]
suggest ninja -h when someone runs 'ninja help'

12 years agoChanged #ifdef _WIN32 to #ifdef _MSC_VER to make sure that MinGW compiles happily
Jiri Moudry [Thu, 26 Apr 2012 14:49:34 +0000 (16:49 +0200)]
Changed #ifdef _WIN32 to #ifdef _MSC_VER to make sure that MinGW compiles happily

12 years agodoc encoding support
Evan Martin [Thu, 26 Apr 2012 04:55:32 +0000 (21:55 -0700)]
doc encoding support

12 years agoallow UTF-8 in rule descriptions
Evan Martin [Thu, 26 Apr 2012 04:52:07 +0000 (21:52 -0700)]
allow UTF-8 in rule descriptions

The lexer already mostly allowed this, except that chars >127 were
being interpreted as negative indexes into the lexer table.

12 years agoMerge pull request #278 from tychoish/master
Evan Martin [Thu, 26 Apr 2012 04:22:21 +0000 (21:22 -0700)]
Merge pull request #278 from tychoish/master

Minor Documentation Tweak

12 years agoreduce custom ninja status patch in minor ways
Evan Martin [Thu, 26 Apr 2012 03:30:35 +0000 (20:30 -0700)]
reduce custom ninja status patch in minor ways

Elsewhere in the code I avoid sstream and manual buffer management,
so switch this code to behave similarly.  Sorry for being OCD.

12 years agoMerge branch 'custom_ninja_status' of git://github.com/polrop/ninja
Evan Martin [Thu, 26 Apr 2012 03:23:26 +0000 (20:23 -0700)]
Merge branch 'custom_ninja_status' of git://github.com/polrop/ninja