summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2015-06-18 16:39:30 -0700
committerNico Weber <nicolasweber@gmx.de>2015-06-18 16:39:30 -0700
commitc6117169aa1e4d3fd419c34379bc7d2927e99a58 (patch)
treeb927c0e75665172ac7333c624ffef6d3189a4e7c
parent3b799f55857db6c7452ecc3788f8c959a23a3d86 (diff)
parent681f761da16521a2c71412d86294066a5e67a34d (diff)
downloadninja-c6117169aa1e4d3fd419c34379bc7d2927e99a58.tar.gz
Merge pull request #971 from stinb/bootstrap-out-of-source
Bootstrap out of source
-rwxr-xr-xconfigure.py20
-rw-r--r--src/browse.cc2
2 files changed, 14 insertions, 8 deletions
diff --git a/configure.py b/configure.py
index 2eacbfe..27516b4 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():
@@ -353,6 +355,9 @@ if platform.supports_ppoll() and not options.force_pselect:
if platform.supports_ninja_browse():
cflags.append('-DNINJA_HAVE_BROWSE')
+# Search for generated headers relative to build dir.
+cflags.append('-I.')
+
def shell_escape(str):
"""Escape str such that it's interpreted as a single argument by
the shell."""
@@ -415,10 +420,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 +596,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)
diff --git a/src/browse.cc b/src/browse.cc
index 83bfe43..8673919 100644
--- a/src/browse.cc
+++ b/src/browse.cc
@@ -18,7 +18,7 @@
#include <stdlib.h>
#include <unistd.h>
-#include "../build/browse_py.h"
+#include "build/browse_py.h"
void RunBrowsePython(State* state, const char* ninja_command,
const char* initial_target) {