--- configure.ac.old 2016-04-26 17:38:00.537781846 -0400 +++ configure.ac 2016-04-26 17:40:06.544789100 -0400 @@ -5195,6 +5195,34 @@ [Define to 1 if the getrandom() function is available]) fi +if test "$cross_compiling" = yes; then + AC_MSG_CHECKING([for native python interpreter]) + for interp in python$PACKAGE_VERSION python3 python; do + which $interp >/dev/null 2>&1 || continue + if $interp -c 'import sys;sys.exit(not sys.version_info@<:@:2@:>@ >= (3,3))'; then + break + fi + interp= + done + if test x$interp = x; then + AC_MSG_ERROR([native python$PACKAGE_VERSION interpreter not found]) + fi + AC_MSG_RESULT($interp) + AC_CHECK_LIB($interp, main, PYTHON_LIB_FOR_BUILD=-l${interp}, PYTHON_LIB_FOR_BUILD=no) + if test x$PYTHON_LIB_FOR_BUILD == xno; then + AC_CHECK_LIB(${interp}m, main, PYTHON_LIB_FOR_BUILD=-l${interp}m, PYTHON_LIB_FOR_BUILD=no) + fi + if test x$PYTHON_LIB_FOR_BUILD != xno; then + PYTHON_INCLUDE_DIR_FOR_BUILD=`$interp -c "from distutils.sysconfig import *; print(get_config_var('CONFINCLUDEPY'))"` + BUILD_NATIVE_TOOLS=yes + fi +fi + +AC_PROG_CC_FOR_BUILD +AC_SUBST(BUILD_NATIVE_TOOLS) +AC_SUBST(PYTHON_INCLUDE_DIR_FOR_BUILD) +AC_SUBST(PYTHON_LIB_FOR_BUILD) + # generate output files AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc Misc/python-config.sh) AC_CONFIG_FILES([Modules/ld_so_aix], [chmod +x Modules/ld_so_aix]) --- Makefile.pre.in.old 2016-04-26 17:38:06.329736218 -0400 +++ Makefile.pre.in 2016-04-26 17:38:14.450672249 -0400 @@ -32,6 +32,7 @@ CC= @CC@ +CC_FOR_BUILD= @CC_FOR_BUILD@ CXX= @CXX@ MAINCC= @MAINCC@ LINKCC= @LINKCC@ @@ -86,11 +87,13 @@ # command line to append to these values without stomping the pre-set # values. PY_CFLAGS= $(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS) +PY_BUILDCFLAGS= $(BASECFLAGS) $(OPT) $(EXTRA_CFLAGS) PY_CFLAGS_NODIST=$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) # 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= $(BASECPPFLAGS) -I. -IInclude -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS) +PY_BUILD_CPPFLAGS= $(BASECPPFLAGS) -I. -IInclude -I$(PYTHON_INCLUDE_DIR_FOR_BUILD) $(CONFIGURE_CPPFLAGS) $(CPPFLAGS) PY_LDFLAGS= $(CONFIGURE_LDFLAGS) $(LDFLAGS) NO_AS_NEEDED= @NO_AS_NEEDED@ LDLAST= @LDLAST@ @@ -102,7 +105,7 @@ CFLAGSFORSHARED=@CFLAGSFORSHARED@ # C flags used for building the interpreter object files PY_CORE_CFLAGS= $(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED) -DPy_BUILD_CORE - +PY_CORE_BUILDCFLAGS= $(PY_BUILDCFLAGS) $(PY_CFLAGS_NODIST) $(PY_BUILD_CPPFLAGS) $(CFLAGSFORSHARED) -DPy_BUILD_CORE # Machine-dependent subdirectories MACHDEP= @MACHDEP@ @@ -226,6 +229,12 @@ BUILD_GNU_TYPE= @build@ HOST_GNU_TYPE= @host@ +BUILD_NATIVE_TOOLS=@BUILD_NATIVE_TOOLS@ +ifdef BUILD_NATIVE_TOOLS + PYTHON_INCLUDE_DIR_FOR_BUILD=@PYTHON_INCLUDE_DIR_FOR_BUILD@ + PYTHON_LIB_FOR_BUILD=@PYTHON_LIB_FOR_BUILD@ +endif + # Tcl and Tk config info from --with-tcltk-includes and -libs options TCLTK_INCLUDES= @TCLTK_INCLUDES@ TCLTK_LIBS= @TCLTK_LIBS@ @@ -329,8 +338,12 @@ $(srcdir)/Parser/tokenizer.h PGENSRCS= $(PSRCS) $(PGSRCS) -PGENOBJS= $(POBJS) $(PGOBJS) +ifndef BUILD_NATIVE_TOOLS + PGENOBJS= $(POBJS) $(PGOBJS) +else + PGENOBJS= $(patsubst %,NativeBuild/%,$(POBJS)) $(patsubst %,NativeBuild/%,$(PGOBJS)) +endif ########################################################################## # opcode.h generation OPCODE_H_DIR= $(srcdir)/Include @@ -707,9 +720,16 @@ # Importlib Programs/_freeze_importlib.o: Programs/_freeze_importlib.c Makefile +ifdef BUILD_NATIVE_TOOLS + $(CC_FOR_BUILD) -c $(PY_CORE_BUILDCFLAGS) -o $@ $< +endif Programs/_freeze_importlib: Programs/_freeze_importlib.o $(LIBRARY_OBJS_OMIT_FROZEN) +ifndef BUILD_NATIVE_TOOLS $(LINKCC) $(PY_LDFLAGS) -o $@ Programs/_freeze_importlib.o $(LIBRARY_OBJS_OMIT_FROZEN) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST) +else + $(CC_FOR_BUILD) -o $@ Programs/_freeze_importlib.o $(PYTHON_LIB_FOR_BUILD) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST) +endif Python/importlib_external.h: $(srcdir)/Lib/importlib/_bootstrap_external.py Programs/_freeze_importlib ./Programs/_freeze_importlib \ @@ -784,7 +804,16 @@ touch $(GRAMMAR_C) $(PGEN): $(PGENOBJS) +ifndef BUILD_NATIVE_TOOLS $(CC) $(OPT) $(PY_LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN) +else + $(CC_FOR_BUILD) $(OPT) $(PY_LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN) +endif + +$(PGENOBJS): %.o: %.c +ifdef BUILD_NATIVE_TOOLS + $(CC_FOR_BUILD) -c $(PY_CORE_BUILDCFLAGS) -o $@ $< +endif Parser/grammar.o: $(srcdir)/Parser/grammar.c \ $(srcdir)/Include/token.h \