--- /dev/null
+Index: configure.in
+===================================================================
+--- configure.in (revision 67686)
++++ configure.in (working copy)
+@@ -12,6 +12,11 @@
+ AC_CONFIG_SRCDIR([Include/object.h])
+ AC_CONFIG_HEADER(pyconfig.h)
+
++# find compiler while respecting --host setting
++AC_CANONICAL_HOST()
++AC_CHECK_TOOLS(CC,gcc cc)
++AC_CHECK_TOOLS(CXX,g++ c++)
++
+ dnl This is for stuff that absolutely must end up in pyconfig.h.
+ dnl Please use pyport.h instead, if possible.
+ AH_TOP([
+@@ -212,8 +217,8 @@
+ # Set name for machine-dependent library files
+ AC_SUBST(MACHDEP)
+ AC_MSG_CHECKING(MACHDEP)
+-if test -z "$MACHDEP"
+-then
++if test -z "$MACHDEP"; then
++ if test "$cross_compiling" = "no"; then
+ ac_sys_system=`uname -s`
+ if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
+ -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
+@@ -221,6 +226,23 @@
+ else
+ ac_sys_release=`uname -r`
+ fi
++ else
++ m=`$CC -dumpmachine`
++ changequote(<<, >>)#dnl
++ ac_sys_system=`expr "$m" : "[^-]*-\([^-]*\)"`
++ changequote([, ])#dnl
++
++
++ case $ac_sys_system in
++ cygwin*) ac_sys_system=`echo $ac_sys_system | sed s/cygwin/CYGWIN/g `;;
++ darwin*) ac_sys_system=`echo $ac_sys_system | sed s/darwin/Darwin/g `;;
++ freebsd*) ac_sys_system=`echo $ac_sys_system | sed s/freebsd/FreeBSD/g `;;
++ linux*) ac_sys_system=`echo $ac_sys_system | sed s/linux/Linux/g `;;
++ esac
++
++
++ fi
++
+ ac_md_system=`echo $ac_sys_system |
+ tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
+ ac_md_release=`echo $ac_sys_release |
+@@ -442,8 +464,8 @@
+ if test -z "$CXX"
+ then
+ case "$CC" in
+- gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
+- cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
++ gcc) AC_CHECK_TOOL(CXX, [g++], [notfound]) ;;
++ cc) AC_CHECK_TOOL(CXX, [c++], [notfound]) ;;
+ esac
+ if test "$CXX" = "notfound"
+ then
+@@ -452,7 +474,7 @@
+ fi
+ if test -z "$CXX"
+ then
+- AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
++ AC_CHECK_TOOLS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
+ if test "$CXX" = "notfound"
+ then
+ CXX=""
+@@ -503,9 +525,11 @@
+ then
+ AC_MSG_RESULT(yes)
+ BUILDEXEEXT=.exe
++ case_sensitive=no
+ else
+- AC_MSG_RESULT(no)
+- BUILDEXEEXT=$EXEEXT
++ AC_MSG_RESULT(no)
++ BUILDEXEEXT=$EXEEXT
++ case_sensitive=yes
+ fi
+ rmdir CaseSensitiveTestDir
+
+@@ -705,9 +729,9 @@
+
+ AC_MSG_RESULT($LDLIBRARY)
+
+-AC_PROG_RANLIB
+-AC_SUBST(AR)
+-AC_CHECK_PROGS(AR, ar aal, ar)
++# find tools while respecting --host setting
++AC_CHECK_TOOL(RANLIB,ranlib)
++AC_CHECK_TOOLS(AR,ar aal,ar)
+
+ AC_SUBST(SVNVERSION)
+ AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
+@@ -833,7 +857,7 @@
+ AC_TRY_RUN([int main() { return 0; }],
+ ac_cv_no_strict_aliasing_ok=yes,
+ ac_cv_no_strict_aliasing_ok=no,
+- ac_cv_no_strict_aliasing_ok=no)
++ ac_cv_no_strict_aliasing_ok=yes)
+ CC="$ac_save_cc"
+ AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
+ if test $ac_cv_no_strict_aliasing_ok = yes
+@@ -2473,7 +2498,7 @@
+ # On Tru64, chflags seems to be present, but calling it will
+ # exit Python
+ AC_MSG_CHECKING(for chflags)
+-AC_TRY_RUN([
++AC_TRY_COMPILE([
+ #include <sys/stat.h>
+ #include <unistd.h>
+ int main(int argc, char*argv[])
+@@ -2482,13 +2507,14 @@
+ return 1;
+ return 0;
+ }
+-],AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
++], void* p = chflags,
++ AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
+ AC_MSG_RESULT(yes),
+ AC_MSG_RESULT(no)
+ )
+
+ AC_MSG_CHECKING(for lchflags)
+-AC_TRY_RUN([
++AC_TRY_COMPILE([
+ #include <sys/stat.h>
+ #include <unistd.h>
+ int main(int argc, char*argv[])
+@@ -2497,7 +2523,8 @@
+ return 1;
+ return 0;
+ }
+-],AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
++], void* p = lchflags,
++ AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
+ AC_MSG_RESULT(yes),
+ AC_MSG_RESULT(no)
+ )
+@@ -3523,30 +3550,19 @@
+ AC_MSG_RESULT(no)
+ )
+
+-AC_MSG_CHECKING(for /dev/ptmx)
++AC_CHECK_FILE(/dev/ptmx,
++ [AC_DEFINE(HAVE_DEV_PTMX, 1,
++ [Define if we have /dev/ptmx.])],
++ [])
+
+-if test -r /dev/ptmx
+-then
+- AC_MSG_RESULT(yes)
+- AC_DEFINE(HAVE_DEV_PTMX, 1,
+- [Define if we have /dev/ptmx.])
+-else
+- AC_MSG_RESULT(no)
+-fi
++AC_CHECK_FILE(/dev/ptc,
++ [AC_DEFINE(HAVE_DEV_PTC, 1,
++ [Define if we have /dev/ptc.])],
++ [])
+
+-AC_MSG_CHECKING(for /dev/ptc)
+-
+-if test -r /dev/ptc
+-then
+- AC_MSG_RESULT(yes)
+- AC_DEFINE(HAVE_DEV_PTC, 1,
+- [Define if we have /dev/ptc.])
+-else
+- AC_MSG_RESULT(no)
+-fi
+-
+ AC_MSG_CHECKING(for %zd printf() format support)
+-AC_TRY_RUN([#include <stdio.h>
++AC_CACHE_VAL(ac_cv_printf_zd_format,
++ AC_TRY_RUN([#include <stdio.h>
+ #include <stddef.h>
+ #include <string.h>
+
+@@ -3582,7 +3598,7 @@
+ }],
+ [AC_MSG_RESULT(yes)
+ AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
+- AC_MSG_RESULT(no))
++ AC_MSG_RESULT(no)))
+
+ AC_CHECK_TYPE(socklen_t,,
+ AC_DEFINE(socklen_t,int,
+@@ -3633,6 +3649,63 @@
+ done
+ AC_MSG_RESULT(done)
+
++# Cross compiling
++AC_SUBST(cross_compiling)
++
++if test "$cross_compiling" = "yes"; then
++ AC_MSG_CHECKING(cc for build)
++ CC_FOR_BUILD="${CC_FOR_BUILD-cc}"
++else
++ CC_FOR_BUILD="${CC_FOR_BUILD-$CC}"
++fi
++
++if test "$cross_compiling" = "yes"; then
++ AC_MSG_RESULT($CC_FOR_BUILD)
++fi
++
++AC_ARG_VAR(CC_FOR_BUILD,[build system C compiler (default: cc)])
++
++if test "$cross_compiling" = "yes"; then
++ AC_MSG_CHECKING(python for build)
++ PYTHON_FOR_BUILD="${PYTHON_FOR_BUILD-python}"
++ PYTHON_FOR_BUILD=`which $PYTHON_FOR_BUILD`
++else
++ PYTHON_FOR_BUILD='./$(BUILDPYTHON)'
++fi
++
++if test "$cross_compiling" = "yes"; then
++ AC_MSG_RESULT($PYTHON_FOR_BUILD)
++fi
++AC_ARG_VAR(PYTHON_FOR_BUILD,[build system python (default: python)])
++AC_SUBST(PYTHON_FOR_BUILD)
++
++if test "$cross_compiling" = "yes"; then
++ CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-}
++ CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD- -I.}
++ CROSS_COMMENT=#
++ if test "$case_sensitive" = "yes"
++ then
++ EXEEXT_FOR_BUILD=
++ else
++ EXEEXT_FOR_BUILD=.exe
++ fi
++ LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-}
++ LIBS_FOR_BUILD=${LIBS_FOR_BUILD-}
++ O_FOR_BUILD=x
++ RUNSHARED="MACHDEP=$ac_sys_system SRCDIR=$srcdir SO=${SO}"
++else
++ CROSS_COMMENT=
++ EXEEXT_FOR_BUILD=$BUILDEXEEXT
++ O_FOR_BUILD=o
++fi
++AC_SUBST(CFLAGS_FOR_BUILD)
++AC_SUBST(CPPFLAGS_FOR_BUILD)
++AC_SUBST(CROSS_COMMENT)
++AC_SUBST(EXEEXT_FOR_BUILD)
++AC_SUBST(LDFLAGS_FOR_BUILD)
++AC_SUBST(LIBS_FOR_BUILD)
++AC_SUBST(O_FOR_BUILD)
++
+ # generate output files
+ AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
+ AC_OUTPUT
+Index: setup.py
+===================================================================
+--- setup.py (revision 67686)
++++ setup.py (working copy)
+@@ -16,8 +16,17 @@
+ from distutils.command.install_lib import install_lib
+
+ # This global variable is used to hold the list of modules to be disabled.
+-disabled_module_list = []
++disabled_module_list = os.environ.get('DISABLED_MODULE_LIST', []).split()
+
++import os
++
++if os.environ.get('CROSS_COMPILING') == 'yes':
++ sysconfig.get_config_vars()
++ sysconfig._config_vars.update (os.environ)
++else:
++ sysconfig.get_config_vars()
++ sysconfig._config_vars['srcdir'] = os.environ['srcdir']
++
+ def add_dir_to_list(dirlist, dir):
+ """Add the directory 'dir' to the list 'dirlist' (at the front) if
+ 1) 'dir' is not already in 'dirlist'
+@@ -260,6 +269,10 @@
+ self.announce('WARNING: skipping import check for Cygwin-based "%s"'
+ % ext.name)
+ return
++ if os.environ.get('CROSS_COMPILING') == 'yes':
++ self.announce('WARNING: skipping import check for cross compiled "%s"'
++ % ext.name)
++ return
+ ext_filename = os.path.join(
+ self.build_lib,
+ self.get_ext_filename(self.get_ext_fullname(ext.name)))
+@@ -301,16 +314,21 @@
+ self.failed.append(ext.name)
+
+ def get_platform(self):
+- # Get value of sys.platform
+- for platform in ['cygwin', 'darwin', 'atheos', 'osf1']:
+- if sys.platform.startswith(platform):
++ # Get value of target's sys.platform
++ p = sys.platform
++ if os.environ.get('CROSS_COMPILING') == 'yes':
++ p = os.environ.get('MACHDEP').lower()
++
++ for platform in ['cygwin', 'mingw', 'beos', 'darwin', 'atheos', 'osf1']:
++ if p.startswith(platform):
+ return platform
+- return sys.platform
++ return p
+
+ def detect_modules(self):
+ # Ensure that /usr/local is always used
+- add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
+- add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
++ if os.environ.get('CROSS_COMPILING') != 'yes':
++ add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
++ add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
+
+ # Add paths specified in the environment variables LDFLAGS and
+ # CPPFLAGS for header and library files.
+@@ -355,11 +373,15 @@
+ # lib_dirs and inc_dirs are used to search for files;
+ # if a file is found in one of those directories, it can
+ # be assumed that no additional -I,-L directives are needed.
+- lib_dirs = self.compiler.library_dirs + [
+- '/lib64', '/usr/lib64',
+- '/lib', '/usr/lib',
+- ]
+- inc_dirs = self.compiler.include_dirs + ['/usr/include']
++ lib_dirs = []
++ inc_dirs = []
++ if os.environ.get('CROSS_COMPILING') != 'yes':
++ lib_dirs = self.compiler.library_dirs + [
++ '/lib64', '/usr/lib64',
++ '/lib', '/usr/lib',
++ ]
++ inc_dirs = self.compiler.include_dirs + ['/usr/include']
++
+ exts = []
+ missing = []
+
+@@ -694,6 +716,9 @@
+ MIN_SQLITE_VERSION = ".".join([str(x)
+ for x in MIN_SQLITE_VERSION_NUMBER])
+
++ if os.environ.get('CROSS_COMPILING') == 'yes':
++ sqlite_inc_paths = []
++
+ # Scan the default include directories before the SQLite specific
+ # ones. This allows one to override the copy of sqlite on OSX,
+ # where /usr/include contains an old version of sqlite.
+Index: Makefile.pre.in
+===================================================================
+--- Makefile.pre.in (revision 67686)
++++ Makefile.pre.in (working copy)
+@@ -27,6 +27,7 @@
+ VERSION= @VERSION@
+ srcdir= @srcdir@
+ VPATH= @srcdir@
++export srcdir
+
+ CC= @CC@
+ CXX= @CXX@
+@@ -72,7 +73,17 @@
+ # C flags used for building the interpreter object files
+ PY_CFLAGS= $(CFLAGS) $(CPPFLAGS) $(CFLAGSFORSHARED) -DPy_BUILD_CORE
+
++# For cross compile: build compiler options
++CC_FOR_BUILD= @CC_FOR_BUILD@
++CROSS_COMPILING= @cross_compiling@
++EXEEXT_FOR_BUILD= @EXEEXT_FOR_BUILD@
++O_FOR_BUILD= @O_FOR_BUILD@
+
++CFLAGS_FOR_BUILD= @CFLAGS_FOR_BUILD@
++CPPFLAGS_FOR_BUILD= @CPPFLAGS_FOR_BUILD@ -I$(srcdir)/Include
++LDFLAGS_FOR_BUILD= @LDFLAGS_FOR_BUILD@
++LIBS_FOR_BUILD= @LIBS_FOR_BUILD@
++
+ # Machine-dependent subdirectories
+ MACHDEP= @MACHDEP@
+
+@@ -173,7 +184,8 @@
+ LIBOBJS= @LIBOBJS@
+
+ PYTHON= python$(EXE)
+-BUILDPYTHON= python$(BUILDEXE)
++BUILDPYTHON= python$(EXE)
++PYTHON_FOR_BUILD= @PYTHON_FOR_BUILD@
+
+ # The task to run while instrument when building the profile-opt target
+ PROFILE_TASK= $(srcdir)/Tools/pybench/pybench.py -n 2 --with-gc --with-syscheck
+@@ -203,7 +215,7 @@
+
+ ##########################################################################
+ # Parser
+-PGEN= Parser/pgen$(EXE)
++PGEN_FOR_BUILD= Parser/pgen$(EXEEXT_FOR_BUILD)
+
+ POBJS= \
+ Parser/acceler.o \
+@@ -220,19 +232,33 @@
+
+ PARSER_OBJS= $(POBJS) Parser/myreadline.o Parser/tokenizer.o
+
+-PGOBJS= \
+- Objects/obmalloc.o \
+- Python/mysnprintf.o \
+- Parser/tokenizer_pgen.o \
+- Parser/printgrammar.o \
+- Parser/pgenmain.o
++POBJS_FOR_BUILD= \
++ Parser/acceler.$(O_FOR_BUILD) \
++ Parser/grammar1.$(O_FOR_BUILD) \
++ Parser/listnode.$(O_FOR_BUILD) \
++ Parser/node.$(O_FOR_BUILD) \
++ Parser/parser.$(O_FOR_BUILD) \
++ Parser/parsetok.$(O_FOR_BUILD) \
++ Parser/bitset.$(O_FOR_BUILD) \
++ Parser/metagrammar.$(O_FOR_BUILD) \
++ Parser/firstsets.$(O_FOR_BUILD) \
++ Parser/grammar.$(O_FOR_BUILD) \
++ Parser/pgen.$(O_FOR_BUILD)
+
++PGOBJS_FOR_BUILD= \
++ Objects/obmalloc.$(O_FOR_BUILD) \
++ Python/mysnprintf.$(O_FOR_BUILD) \
++ Parser/tokenizer_pgen.$(O_FOR_BUILD) \
++ Parser/printgrammar.$(O_FOR_BUILD) \
++ Parser/pgenmain.$(O_FOR_BUILD)
++
+ PARSER_HEADERS= \
+ Parser/parser.h \
+ Parser/tokenizer.h
+
+-PGENOBJS= $(PGENMAIN) $(POBJS) $(PGOBJS)
++PGENOBJS= $(POBJS_FOR_BUILD) $(PGOBJS_FOR_BUILD)
+
++
+ ##########################################################################
+ # AST
+ AST_H_DIR= $(srcdir)/Include
+@@ -385,15 +411,17 @@
+ Modules/python.o \
+ $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
+
+-platform: $(BUILDPYTHON)
+- $(RUNSHARED) ./$(BUILDPYTHON) -E -c 'import sys ; from distutils.util import get_platform ; print(get_platform()+"-"+sys.version[0:3])' >platform
++platform: $(PYTHON_FOR_BUILD)
++ $(RUNSHARED) ./$(PYTHON_FOR_BUILD) -E -c 'import sys ; from distutils.util import get_platform ; print(get_platform()+"-"+sys.version[0:3])' >platform
+
+
+ # Build the shared modules
+-sharedmods: $(BUILDPYTHON)
++sharedmods: $(PYTHON_FOR_BUILD)
+ @case $$MAKEFLAGS in \
+- *s*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py -q build;; \
+- *) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py build;; \
++ *s*) $(RUNSHARED) CROSS_COMPILING=$(CROSS_COMPILING) CC='$(CC)' \
++ LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(PYTHON_FOR_BUILD) -E $(srcdir)/setup.py -q build;; \
++ *) $(RUNSHARED) CROSS_COMPILING=$(CROSS_COMPILING) CC='$(CC)' \
++ LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(PYTHON_FOR_BUILD) -E $(srcdir)/setup.py build;; \
+ esac
+
+ # Build static library
+@@ -508,13 +536,12 @@
+ Modules/python.o: $(srcdir)/Modules/python.c
+ $(MAINCC) -c $(PY_CFLAGS) -o $@ $(srcdir)/Modules/python.c
+
+-
+-$(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT)
++$(GRAMMAR_H) $(GRAMMAR_C): $(PGEN_FOR_BUILD) $(GRAMMAR_INPUT)
+ -@$(INSTALL) -d Include
+- -$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
++ -$(PGEN_FOR_BUILD) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
+
+-$(PGEN): $(PGENOBJS)
+- $(CC) $(OPT) $(LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN)
++$(PGEN_FOR_BUILD): $(PGENOBJS)
++ $(CC_FOR_BUILD) $(OPT) $(LDFLAGS_FOR_BUILD) $(PGENOBJS) $(LIBS_FOR_BUILD) -o $(PGEN_FOR_BUILD)
+
+ Parser/grammar.o: $(srcdir)/Parser/grammar.c \
+ $(srcdir)/Include/token.h \
+@@ -569,6 +596,14 @@
+
+
+ ############################################################################
++# Cross compile rules
++
++# .x is a native object file during cross-compile.
++.SUFFIXES: .x
++.c.x:
++ $(CC_FOR_BUILD) -c $(CPPFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) -o $@ $<
++
++############################################################################
+ # Header files
+
+ PYTHON_HEADERS= \
+@@ -665,7 +700,7 @@
+
+ TESTOPTS= -l $(EXTRATESTOPTS)
+ TESTPROG= $(srcdir)/Lib/test/regrtest.py
+-TESTPYTHON= $(RUNSHARED) ./$(BUILDPYTHON) -E -bb
++TESTPYTHON= $(RUNSHARED) ./$(PYTHON_FOR_BUILD) -E -bb
+ test: all platform
+ -find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f
+ -$(TESTPYTHON) $(TESTPROG) $(TESTOPTS)
+@@ -688,7 +723,7 @@
+ -find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f
+ -$(TESTPYTHON) $(TESTPROG) $(TESTOPTS) -uall
+ $(TESTPYTHON) $(TESTPROG) $(TESTOPTS) -uall
+- $(RUNSHARED) /usr/libexec/oah/translate ./$(BUILDPYTHON) -E $(TESTPROG) $(TESTOPTS) -uall
++ $(RUNSHARED) /usr/libexec/oah/translate ./$(PYTHON_FOR_BUILD) -E $(TESTPROG) $(TESTOPTS) -uall
+
+
+ # Like testall, but with a single pass only
+@@ -816,7 +851,7 @@
+ setuptools setuptools/command setuptools/tests setuptools.egg-info \
+ multiprocessing multiprocessing/dummy \
+ curses $(MACHDEPS)
+-libinstall: build_all $(srcdir)/Lib/$(PLATDIR)
++libinstall: $(srcdir)/Lib/$(PLATDIR) $(PYTHON_FOR_BUILD)
+ @for i in $(SCRIPTDIR) $(LIBDEST); \
+ do \
+ if test ! -d $(DESTDIR)$$i; then \
+@@ -873,23 +908,23 @@
+ done
+ $(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
+ -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+- ./$(BUILDPYTHON) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
++ ./$(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
+ -d $(LIBDEST) -f \
+ -x 'bad_coding|badsyntax|site-packages' $(DESTDIR)$(LIBDEST)
+ -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+- ./$(BUILDPYTHON) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \
++ ./$(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \
+ -d $(LIBDEST) -f \
+ -x 'bad_coding|badsyntax|site-packages' $(DESTDIR)$(LIBDEST)
+ -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+- ./$(BUILDPYTHON) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
++ ./$(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
+ -d $(LIBDEST)/site-packages -f \
+ -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
+ -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+- ./$(BUILDPYTHON) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \
++ ./$(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \
+ -d $(LIBDEST)/site-packages -f \
+ -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
+ -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+- ./$(BUILDPYTHON) -Wi -c "import lib2to3.pygram, lib2to3.patcomp;lib2to3.patcomp.PatternCompiler()"
++ ./$(PYTHON_FOR_BUILD) -Wi -c "import lib2to3.pygram, lib2to3.patcomp;lib2to3.patcomp.PatternCompiler()"
+
+ # Create the PLATDIR source directory, if one wasn't distributed..
+ $(srcdir)/Lib/$(PLATDIR):
+@@ -976,8 +1011,9 @@
+ # Install the dynamically loadable modules
+ # This goes into $(exec_prefix)
+ sharedinstall:
+- $(RUNSHARED) ./$(BUILDPYTHON) -E $(srcdir)/setup.py install \
+- --prefix=$(prefix) \
++ CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' CROSS_COMPILING='$(CROSS_COMPILING)' \
++ $(RUNSHARED) $(PYTHON_FOR_BUILD) -E $(srcdir)/setup.py install \
++ --prefix=$(prefix) \
+ --install-scripts=$(BINDIR) \
+ --install-platlib=$(DESTSHARED) \
+ --root=/$(DESTDIR)
+@@ -1054,8 +1090,8 @@
+
+ # This installs a few of the useful scripts in Tools/scripts
+ scriptsinstall:
+- SRCDIR=$(srcdir) $(RUNSHARED) \
+- ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/setup.py install \
++ $(RUNSHARED) \
++ $(PYTHON_FOR_BUILD) $(srcdir)/Tools/scripts/setup.py install \
+ --prefix=$(prefix) \
+ --install-scripts=$(BINDIR) \
+ --root=/$(DESTDIR)
+@@ -1130,11 +1166,12 @@
+ find . -name '*.gc??' -exec rm -f {} ';'
+
+ clobber: clean profile-removal
+- -rm -f $(BUILDPYTHON) $(PGEN) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \
++ -rm -f $(BUILDPYTHON) $(PGEN_FOR_BUILD) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \
+ tags TAGS \
+ config.cache config.log pyconfig.h Modules/config.c
+ -rm -rf build platform
+ -rm -rf $(PYTHONFRAMEWORKDIR)
++ -rm -rf buildpython
+
+ # Make things extra clean, before making a distribution:
+ # remove all generated files, even Makefile[.pre]