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.
This commit is contained in:
Trent Nelson 2012-10-16 08:53:13 -04:00
commit cd02b3f781
3 changed files with 47 additions and 6 deletions

View 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. -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

20
configure vendored
View File

@ -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

View File

@ -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)