From 78b1e52a5df429d336d4a08dd0d77fc74bb477dc Mon Sep 17 00:00:00 2001 From: Jason Haslam Date: Tue, 26 May 2015 15:19:28 -0600 Subject: Allow configure script to bootstrap out of source. --- configure.py | 17 ++++++++++------- 1 file 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) -- cgit v1.2.1 From 681f761da16521a2c71412d86294066a5e67a34d Mon Sep 17 00:00:00 2001 From: Jason Haslam Date: Tue, 26 May 2015 16:47:18 -0600 Subject: Search for generated headers relative to build dir. --- configure.py | 3 +++ src/browse.cc | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/configure.py b/configure.py index 69f6075..27516b4 100755 --- a/configure.py +++ b/configure.py @@ -355,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.""" 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 #include -#include "../build/browse_py.h" +#include "build/browse_py.h" void RunBrowsePython(State* state, const char* ninja_command, const char* initial_target) { -- cgit v1.2.1