summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2012-08-16 03:11:27 (GMT)
committerNico Weber <nicolasweber@gmx.de>2012-08-16 03:11:27 (GMT)
commit6c7fae2af8e5c2d34bdbed5d1c3c5739bb548ee8 (patch)
treeb8414181ca75c41404a609a248b506435b3cce7a
parentc3928c1c0df0fab93d7b47392ba593d9e25ade49 (diff)
downloadNinja-6c7fae2af8e5c2d34bdbed5d1c3c5739bb548ee8.zip
Ninja-6c7fae2af8e5c2d34bdbed5d1c3c5739bb548ee8.tar.gz
Ninja-6c7fae2af8e5c2d34bdbed5d1c3c5739bb548ee8.tar.bz2
Only write re2c rules if a re2c binary is found in the PATH.
-rwxr-xr-xconfigure.py22
1 files changed, 16 insertions, 6 deletions
diff --git a/configure.py b/configure.py
index 981d401..287f58a 100755
--- a/configure.py
+++ b/configure.py
@@ -233,12 +233,22 @@ if platform not in ('mingw', 'windows'):
n.newline()
n.comment('the depfile parser and ninja lexers are generated using re2c.')
-n.rule('re2c',
- command='re2c -b -i --no-generation-date -o $out $in',
- description='RE2C $out')
-# Generate the .cc files in the source directory so we can check them in.
-n.build(src('depfile_parser.cc'), 're2c', src('depfile_parser.in.cc'))
-n.build(src('lexer.cc'), 're2c', src('lexer.in.cc'))
+def has_re2c():
+ import subprocess
+ try:
+ subprocess.call(['re2c', '-v'], stdout=subprocess.PIPE)
+ return True
+ except OSError:
+ return False
+if has_re2c():
+ n.rule('re2c',
+ command='re2c -b -i --no-generation-date -o $out $in',
+ description='RE2C $out')
+ # Generate the .cc files in the source directory so we can check them in.
+ n.build(src('depfile_parser.cc'), 're2c', src('depfile_parser.in.cc'))
+ n.build(src('lexer.cc'), 're2c', src('lexer.in.cc'))
+else:
+ n.comment('(re2c not found, using checked-in cc files instead.)')
n.newline()
n.comment('Core source files all build into ninja library.')