summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTrent Nelson <trent@trent.me>2012-10-16 12:53:13 (GMT)
committerTrent Nelson <trent@trent.me>2012-10-16 12:53:13 (GMT)
commitcd02b3f781b0a0d545bffb47741a2f5bb37c9a41 (patch)
treea42cb2b46823328c22b3065e1c4442c02ff78cab
parentb16269e375ec3b9dd656d64469f3810b4a0eec81 (diff)
parent4d4ec6502d6aec31284cf2f68d81c64fcedb1049 (diff)
downloadcpython-cd02b3f781b0a0d545bffb47741a2f5bb37c9a41.zip
cpython-cd02b3f781b0a0d545bffb47741a2f5bb37c9a41.tar.gz
cpython-cd02b3f781b0a0d545bffb47741a2f5bb37c9a41.tar.bz2
Merge issue #15819: additional fixes for out-of-tree builds from read-only src.
Specifically, make sure the 'Object', 'Python' and 'Include' directories in the build directory take precedence over the source directory if we're an out-of-tree build. Fix typeslots.inc so that it gets generated into the build directory. In addition, for 3.3, make sure importlib.h gets generated into the build directory.
-rw-r--r--Makefile.pre.in15
-rwxr-xr-xconfigure20
-rw-r--r--configure.ac18
3 files changed, 47 insertions, 6 deletions
diff --git a/Makefile.pre.in b/Makefile.pre.in
index 10ad381..4ff801b 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -27,6 +27,8 @@ MODLIBS= _MODLIBS_
VERSION= @VERSION@
srcdir= @srcdir@
VPATH= @srcdir@
+BUILDDIR= @BUILDDIR@
+
CC= @CC@
CXX= @CXX@
@@ -66,6 +68,7 @@ MAKESETUP= $(srcdir)/Modules/makesetup
# Compiler options
OPT= @OPT@
BASECFLAGS= @BASECFLAGS@
+BASECPPFLAGS= @BASECPPFLAGS@
CONFIGURE_CFLAGS= @CFLAGS@
CONFIGURE_CPPFLAGS= @CPPFLAGS@
CONFIGURE_LDFLAGS= @LDFLAGS@
@@ -76,7 +79,7 @@ PY_CFLAGS= $(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS)
# Both CPPFLAGS and LDFLAGS need to contain the shell's value for setup.py to
# be able to build extension modules using the directories specified in the
# environment variables
-PY_CPPFLAGS= -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS)
+PY_CPPFLAGS= $(BASECPPFLAGS) -I. -IInclude -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS)
PY_LDFLAGS= $(CONFIGURE_LDFLAGS) $(LDFLAGS)
NO_AS_NEEDED= @NO_AS_NEEDED@
LDLAST= @LDLAST@
@@ -310,7 +313,7 @@ ASDLGEN= @DISABLE_ASDLGEN@ $(srcdir)/Parser/asdl_c.py
# Python
OPCODETARGETS_H= \
- $(srcdir)/Python/opcode_targets.h
+ Python/opcode_targets.h
OPCODETARGETGEN= \
$(srcdir)/Python/makeopcodetargets.py
@@ -725,11 +728,11 @@ Python/ceval.o: $(OPCODETARGETS_H) $(srcdir)/Python/ceval_gil.h
Python/formatter_unicode.o: $(srcdir)/Python/formatter_unicode.c \
$(BYTESTR_DEPS)
-Python/frozen.o: $(srcdir)/Python/importlib.h
+Python/frozen.o: Python/importlib.h
-Objects/typeobject.o: $(srcdir)/Objects/typeslots.inc
-$(srcdir)/Objects/typeslots.inc: $(srcdir)/Include/typeslots.h $(srcdir)/Objects/typeslots.py
- $(PYTHON) $(srcdir)/Objects/typeslots.py < $(srcdir)/Include/typeslots.h > $(srcdir)/Objects/typeslots.inc
+Objects/typeobject.o: Objects/typeslots.inc
+Objects/typeslots.inc: $(srcdir)/Include/typeslots.h $(srcdir)/Objects/typeslots.py
+ $(PYTHON) $(srcdir)/Objects/typeslots.py < $(srcdir)/Include/typeslots.h > Objects/typeslots.inc
############################################################################
# Header files
diff --git a/configure b/configure
index 88d1e4c..d37b14b 100755
--- a/configure
+++ b/configure
@@ -714,6 +714,8 @@ HAS_HG
HGBRANCH
HGTAG
HGVERSION
+BASECPPFLAGS
+BUILDDIR
target_alias
host_alias
build_alias
@@ -2719,6 +2721,24 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+BUILDDIR="`pwd`"
+
+
+if test "$srcdir" != "$BUILDDIR"; then
+ # If we're building out-of-tree, we need to make sure the following
+ # resources get picked up before their $srcdir counterparts.
+ # Objects/ -> typeslots.inc
+ # Include/ -> Python-ast.h, graminit.h
+ # Python/ -> importlib.h
+ # (A side effect of this is that these resources will automatically be
+ # regenerated when building out-of-tree, regardless of whether or not
+ # the $srcdir counterpart is up-to-date. This is an acceptable trade
+ # off.)
+ BASECPPFLAGS="-IObjects -IInclude -IPython"
+else
+ BASECPPFLAGS=""
+fi
+
diff --git a/configure.ac b/configure.ac
index df0b004..1762bd6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -9,6 +9,24 @@ AC_PREREQ(2.65)
AC_INIT(python, PYTHON_VERSION, http://bugs.python.org/)
+BUILDDIR="`pwd`"
+AC_SUBST(BUILDDIR)
+AC_SUBST(BASECPPFLAGS)
+if test "$srcdir" != "$BUILDDIR"; then
+ # If we're building out-of-tree, we need to make sure the following
+ # resources get picked up before their $srcdir counterparts.
+ # Objects/ -> typeslots.inc
+ # Include/ -> Python-ast.h, graminit.h
+ # Python/ -> importlib.h
+ # (A side effect of this is that these resources will automatically be
+ # regenerated when building out-of-tree, regardless of whether or not
+ # the $srcdir counterpart is up-to-date. This is an acceptable trade
+ # off.)
+ BASECPPFLAGS="-IObjects -IInclude -IPython"
+else
+ BASECPPFLAGS=""
+fi
+
AC_SUBST(HGVERSION)
AC_SUBST(HGTAG)
AC_SUBST(HGBRANCH)