]> granicus.if.org Git - python/commitdiff
Issue #15819: additional fixes for out-of-tree builds from read-only src.
authorTrent Nelson <trent@trent.me>
Tue, 16 Oct 2012 12:41:32 +0000 (08:41 -0400)
committerTrent Nelson <trent@trent.me>
Tue, 16 Oct 2012 12:41:32 +0000 (08:41 -0400)
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.

Makefile.pre.in
configure
configure.ac

index 6dec272ab826fc14de23f98a025b911e0724503d..1b6965592e862becf1dd29e0ddc8a67474a3187a 100644 (file)
@@ -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. -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 @@ 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
@@ -663,9 +666,9 @@ Python/formatter_unicode.o: $(srcdir)/Python/formatter_unicode.c \
                                $(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
index f9a62613a34460e3432a2fafd3571ac73a7ed7e7..8ba3dec51fd20f9485c75e38c12c462b2334c4c7 100755 (executable)
--- a/configure
+++ b/configure
@@ -651,6 +651,8 @@ HAS_HG
 HGBRANCH
 HGTAG
 HGVERSION
+BASECPPFLAGS
+BUILDDIR
 SVNVERSION
 ARFLAGS
 AR
@@ -5205,6 +5207,24 @@ else
        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
+
 
 
 
index 84d723aa8a7715aa933fd19a29faf9d6f0a573b5..9222c887c30c7d47daa8bbbe03bda7178a9584f0 100644 (file)
@@ -830,6 +830,24 @@ else
        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)