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:
commit
4d4ec6502d
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
18
configure.ac
18
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)
|
||||
|
|
Loading…
Reference in New Issue