changeset: 79748:617591e7d708 branch: 3.2 parent: 79732:5e770555be62 user: Trent Nelson date: Tue Oct 16 08:41:32 2012 -0400 files: Makefile.pre.in configure configure.ac description: 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. diff -r 5e770555be62 -r 617591e7d708 Makefile.pre.in --- a/Makefile.pre.in Tue Oct 16 10:28:31 2012 +0100 +++ b/Makefile.pre.in Tue Oct 16 08:41:32 2012 -0400 @@ -27,6 +27,8 @@ VERSION= @VERSION@ srcdir= @srcdir@ VPATH= @srcdir@ +BUILDDIR= @BUILDDIR@ + CC= @CC@ CXX= @CXX@ @@ -66,6 +68,7 @@ # Compiler options OPT= @OPT@ BASECFLAGS= @BASECFLAGS@ +BASECPPFLAGS= @BASECPPFLAGS@ CONFIGURE_CFLAGS= @CFLAGS@ CONFIGURE_CPPFLAGS= @CPPFLAGS@ CONFIGURE_LDFLAGS= @LDFLAGS@ @@ -76,7 +79,7 @@ # 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. -IInclude -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@ @@ -282,7 +285,7 @@ # Python OPCODETARGETS_H= \ - $(srcdir)/Python/opcode_targets.h + Python/opcode_targets.h OPCODETARGETGEN= \ $(srcdir)/Python/makeopcodetargets.py @@ -663,9 +666,9 @@ $(BYTESTR_DEPS) \ $(srcdir)/Objects/stringlib/formatter.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 -r 5e770555be62 -r 617591e7d708 configure --- a/configure Tue Oct 16 10:28:31 2012 +0100 +++ b/configure Tue Oct 16 08:41:32 2012 -0400 @@ -651,6 +651,8 @@ HGBRANCH HGTAG HGVERSION +BASECPPFLAGS +BUILDDIR SVNVERSION ARFLAGS AR @@ -5205,6 +5207,24 @@ SVNVERSION="echo Unversioned directory" fi +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 -r 5e770555be62 -r 617591e7d708 configure.ac --- a/configure.ac Tue Oct 16 10:28:31 2012 +0100 +++ b/configure.ac Tue Oct 16 08:41:32 2012 -0400 @@ -830,6 +830,24 @@ SVNVERSION="echo Unversioned directory" fi +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)