summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Haslam <jason@scitools.com>2015-05-26 15:19:28 -0600
committerJason Haslam <jason@scitools.com>2015-05-26 15:19:28 -0600
commit78b1e52a5df429d336d4a08dd0d77fc74bb477dc (patch)
treecd597f90bf4fb27d84932f2f59abc45a1913cb58
parentf0f36ad1c72f6100a8957f035769fda50b69919f (diff)
downloadninja-78b1e52a5df429d336d4a08dd0d77fc74bb477dc.tar.gz
Allow configure script to bootstrap out of source.
-rwxr-xr-xconfigure.py17
1 files changed, 10 insertions, 7 deletions
diff --git a/configure.py b/configure.py
index 2eacbfe..69f6075 100755
--- a/configure.py
+++ b/configure.py
@@ -28,7 +28,8 @@ import string
import subprocess
import sys
-sys.path.insert(0, 'misc')
+sourcedir = os.path.dirname(os.path.realpath(__file__))
+sys.path.insert(0, os.path.join(sourcedir, 'misc'))
import ninja_syntax
@@ -251,11 +252,11 @@ if platform.is_msvc():
objext = '.obj'
def src(filename):
- return os.path.join('src', filename)
+ return os.path.join('$sourcedir', 'src', filename)
def built(filename):
return os.path.join('$builddir', filename)
def doc(filename):
- return os.path.join('doc', filename)
+ return os.path.join('$sourcedir', 'doc', filename)
def cc(name, **kwargs):
return n.build(built(name + objext), 'cxx', src(name + '.c'), **kwargs)
def cxx(name, **kwargs):
@@ -267,6 +268,7 @@ def binary(name):
return exe
return name
+n.variable('sourcedir', sourcedir)
n.variable('builddir', 'build')
n.variable('cxx', CXX)
if platform.is_msvc():
@@ -415,10 +417,10 @@ objs = []
if platform.supports_ninja_browse():
n.comment('browse_py.h is used to inline browse.py.')
n.rule('inline',
- command='src/inline.sh $varname < $in > $out',
+ command=src('inline.sh') + ' $varname < $in > $out',
description='INLINE $out')
n.build(built('browse_py.h'), 'inline', src('browse.py'),
- implicit='src/inline.sh',
+ implicit=src('inline.sh'),
variables=[('varname', 'kBrowsePy')])
n.newline()
@@ -591,11 +593,12 @@ n.newline()
if not host.is_mingw():
n.comment('Regenerate build files if build script changes.')
n.rule('configure',
- command='${configure_env}%s configure.py $configure_args' %
+ command='${configure_env}%s $sourcedir/configure.py $configure_args' %
options.with_python,
generator=True)
n.build('build.ninja', 'configure',
- implicit=['configure.py', os.path.normpath('misc/ninja_syntax.py')])
+ implicit=['$sourcedir/configure.py',
+ os.path.normpath('$sourcedir/misc/ninja_syntax.py')])
n.newline()
n.default(ninja)