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:51:24 -04:00
commit 4d4ec6502d
3 changed files with 47 additions and 6 deletions

View File

@ -27,6 +27,8 @@ MODLIBS= _MODLIBS_
VERSION= @VERSION@ VERSION= @VERSION@
srcdir= @srcdir@ srcdir= @srcdir@
VPATH= @srcdir@ VPATH= @srcdir@
BUILDDIR= @BUILDDIR@
CC= @CC@ CC= @CC@
CXX= @CXX@ CXX= @CXX@
@ -66,6 +68,7 @@ MAKESETUP= $(srcdir)/Modules/makesetup
# Compiler options # Compiler options
OPT= @OPT@ OPT= @OPT@
BASECFLAGS= @BASECFLAGS@ BASECFLAGS= @BASECFLAGS@
BASECPPFLAGS= @BASECPPFLAGS@
CONFIGURE_CFLAGS= @CFLAGS@ CONFIGURE_CFLAGS= @CFLAGS@
CONFIGURE_CPPFLAGS= @CPPFLAGS@ CONFIGURE_CPPFLAGS= @CPPFLAGS@
CONFIGURE_LDFLAGS= @LDFLAGS@ 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 # 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 # be able to build extension modules using the directories specified in the
# environment variables # 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) PY_LDFLAGS= $(CONFIGURE_LDFLAGS) $(LDFLAGS)
NO_AS_NEEDED= @NO_AS_NEEDED@ NO_AS_NEEDED= @NO_AS_NEEDED@
LDLAST= @LDLAST@ LDLAST= @LDLAST@
@ -310,7 +313,7 @@ ASDLGEN= @DISABLE_ASDLGEN@ $(srcdir)/Parser/asdl_c.py
# Python # Python
OPCODETARGETS_H= \ OPCODETARGETS_H= \
$(srcdir)/Python/opcode_targets.h Python/opcode_targets.h
OPCODETARGETGEN= \ OPCODETARGETGEN= \
$(srcdir)/Python/makeopcodetargets.py $(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 \ Python/formatter_unicode.o: $(srcdir)/Python/formatter_unicode.c \
$(BYTESTR_DEPS) $(BYTESTR_DEPS)
Python/frozen.o: $(srcdir)/Python/importlib.h Python/frozen.o: Python/importlib.h
Objects/typeobject.o: $(srcdir)/Objects/typeslots.inc Objects/typeobject.o: Objects/typeslots.inc
$(srcdir)/Objects/typeslots.inc: $(srcdir)/Include/typeslots.h $(srcdir)/Objects/typeslots.py Objects/typeslots.inc: $(srcdir)/Include/typeslots.h $(srcdir)/Objects/typeslots.py
$(PYTHON) $(srcdir)/Objects/typeslots.py < $(srcdir)/Include/typeslots.h > $(srcdir)/Objects/typeslots.inc $(PYTHON) $(srcdir)/Objects/typeslots.py < $(srcdir)/Include/typeslots.h > Objects/typeslots.inc
############################################################################ ############################################################################
# Header files # Header files

20
configure vendored
View File

@ -714,6 +714,8 @@ HAS_HG
HGBRANCH HGBRANCH
HGTAG HGTAG
HGVERSION HGVERSION
BASECPPFLAGS
BUILDDIR
target_alias target_alias
host_alias host_alias
build_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/) 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(HGVERSION)
AC_SUBST(HGTAG) AC_SUBST(HGTAG)
AC_SUBST(HGBRANCH) AC_SUBST(HGBRANCH)