[Python-Dev] [patch 8/8] hand --host and --build over to libffi

2009-01-08 Thread Robert Schwebel
Handle config args for libffi, for cross compilation.

Signed-off-by: Robert Schwebel 

---
 Makefile.pre.in |2 ++
 setup.py|4 ++--
 2 files changed, 4 insertions(+), 2 deletions(-)

Index: Python-3.0/setup.py
===
--- Python-3.0.orig/setup.py
+++ Python-3.0/setup.py
@@ -1342,12 +1342,12 @@ class PyBuildExt(build_ext):
  ffi_configfile):
 from distutils.dir_util import mkpath
 mkpath(ffi_builddir)
-config_args = []
+config_args = ['--host=%s' % os.environ.get('GNU_HOST'), 
'--build=%s' % os.environ.get('GNU_BUILD')]
 
 # Pass empty CFLAGS because we'll just append the resulting
 # CFLAGS to Python's; -g or -O2 is to be avoided.
 cmd = "cd %s && env CFLAGS='' '%s/configure' %s" \
-  % (ffi_builddir, ffi_srcdir, " ".join(config_args))
+% (ffi_builddir, ffi_srcdir, " ".join(config_args))
 
 res = os.system(cmd)
 if res or not os.path.exists(ffi_configfile):
Index: Python-3.0/Makefile.pre.in
===
--- Python-3.0.orig/Makefile.pre.in
+++ Python-3.0/Makefile.pre.in
@@ -423,6 +423,7 @@ sharedmods: $(PYTHON_FOR_BUILD)
CC='$(CC)' \
LDSHARED='$(BLDSHARED)' \
OPT='$(OPT)' \
+   CONFIG_ARGS="$(CONFIG_ARGS)" \
$(PYTHON_FOR_BUILD) -E $(srcdir)/setup.py -q build \
;; \
*) \
@@ -431,6 +432,7 @@ sharedmods: $(PYTHON_FOR_BUILD)
CC='$(CC)' \
LDSHARED='$(BLDSHARED)' \
OPT='$(OPT)' \
+   CONFIG_ARGS="$(CONFIG_ARGS)" \
$(PYTHON_FOR_BUILD) -E $(srcdir)/setup.py build \
;; \
esac

-- 
Pengutronix e.K.   | Dipl.-Ing. Robert Schwebel  |
Industrial Linux Solutions | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0|
Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |
___
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


[Python-Dev] [patch 2/8] add _FOR_BUILD infrastructure

2009-01-08 Thread Robert Schwebel
When cross compiling we need a PYTHON_FOR_BUILD, PGEN_FOR_BUILD etc. The
names follow usual autotool nomenclatures.

Patch is originally from here:
http://bugs.gentoo.org/attachment.cgi?id=130627

and was ported to Python 3.0rc2

Signed-off-by: Robert Schwebel 

---
 Makefile.pre.in |  116 +++-
 1 file changed, 82 insertions(+), 34 deletions(-)

Index: Python-3.0/Makefile.pre.in
===
--- Python-3.0.orig/Makefile.pre.in
+++ Python-3.0/Makefile.pre.in
@@ -28,6 +28,8 @@ VERSION=  @VERSION@
 srcdir=@srcdir@
 VPATH= @srcdir@
 
+export srcdir
+
 CC=@CC@
 CXX=   @CXX@
 MAINCC=@MAINCC@
@@ -72,6 +74,15 @@ cflagsforshar...@cflagsforshared@
 # 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 @@ LIBOBJDIR=  Python/
 LIBOBJS=   @LIBOBJS@
 
 PYTHON=python$(EXE)
-BUILDPYTHON=   python$(BUILDEXE)
+BUILDPYTHON=   python$(EXE)
+python_for_bui...@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,8 @@ GRAMMAR_INPUT=  $(srcdir)/Grammar/Grammar
 
 ##
 # Parser
-PGEN=  Parser/pgen$(EXE)
+PGEN_FOR_BUILD=Parser/pgen$(EXEEXT_FOR_BUILD)
+
 
 POBJS= \
Parser/acceler.o \
@@ -220,18 +233,31 @@ POBJS=\
 
 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
@@ -385,15 +411,28 @@ $(BUILDPYTHON):   Modules/python.o $(LIBRA
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=

[Python-Dev] [patch 7/8] make setup.py cross compilation aware

2009-01-08 Thread Robert Schwebel
Add a CROSS_COMPILING=yes variable in order to tell setup.py that we are
cross compiling.

Signed-off-by: Robert Schwebel 

---
 setup.py |   46 --
 1 file changed, 36 insertions(+), 10 deletions(-)

Index: Python-3.0/setup.py
===
--- Python-3.0.orig/setup.py
+++ Python-3.0/setup.py
@@ -18,6 +18,15 @@ from distutils.command.install_lib impor
 # This global variable is used to hold the list of modules to be disabled.
 disabled_module_list = []
 
+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 @@ class PyBuildExt(build_ext):
 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,20 @@ class PyBuildExt(build_ext):
 self.failed.append(ext.name)
 
 def get_platform(self):
-# Get value of sys.platform
+# Get value of target's sys.platform
+p = sys.platform
+if os.environ.get('CROSS_COMPILING') == 'yes':
+p = os.environ.get('CROSS_TARGET')
 for platform in ['cygwin', 'darwin', 'atheos', 'osf1']:
-if sys.platform.startswith(platform):
+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 +372,14 @@ class PyBuildExt(build_ext):
 # 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 = []
 
@@ -675,6 +695,9 @@ class PyBuildExt(build_ext):
 '/sw/include/db3',
 ]
 
+if os.environ.get('CROSS_COMPILING') == 'yes':
+db_inc_paths = []
+
 db_incs = None
 
 # The sqlite interface
@@ -694,6 +717,9 @@ class PyBuildExt(build_ext):
 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.

-- 
Pengutronix e.K.   | Dipl.-Ing. Robert Schwebel  |
Industrial Linux Solutions | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0|
Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |
___
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


[Python-Dev] [patch 6/8] fix lchflags test

2009-01-08 Thread Robert Schwebel
When cross compiling, AC_TRY_RUN should not be used. This patch fixes it
in a way that for a cross scenario the test can be overwritten on the
command line.

Signed-off-by: Robert Schwebel 

---
 configure.in |   23 ---
 1 file changed, 20 insertions(+), 3 deletions(-)

Index: Python-3.0/configure.in
===
--- Python-3.0.orig/configure.in
+++ Python-3.0/configure.in
@@ -2526,7 +2526,7 @@ no)
 esac
 
 AC_MSG_CHECKING(for lchflags)
-AC_TRY_RUN([
+AC_RUN_IFELSE([
 #include 
 #include 
 int main(int argc, char*argv[])
@@ -2535,10 +2535,27 @@ int main(int argc, char*argv[])
 return 1;
   return 0;
 }
-],AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
-  AC_MSG_RESULT(yes),
+],[
+  AC_CACHE_VAL(ac_cv_have_lchflags, ac_cv_have_lchflags=yes)
+  AC_MSG_RESULT(yes)
+],[
+  AC_CACHE_VAL(ac_cv_have_lchflags, ac_cv_have_lchflags=no)
   AC_MSG_RESULT(no)
+],[
+  AC_CACHE_VAL(ac_cv_have_lchflags, ac_cv_have_lchflags=undef)
+  AC_MSG_RESULT([crosscompiling, ac_cv_have_lchflags=$ac_cv_have_lchflags])
+]
 )
+case $ac_cv_have_lchflags in
+yes)
+  AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the 'lchflags' function.)
+  ;;
+no)
+  ;;
+*)
+  AC_MSG_ERROR([please specify ac_cv_have_lchflags=yes|no])
+  ;;
+esac
 
 dnl Check if system zlib has *Copy() functions
 dnl

-- 
Pengutronix e.K.   | Dipl.-Ing. Robert Schwebel  |
Industrial Linux Solutions | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0|
Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |
___
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


[Python-Dev] [patch 1/8] distutils need to care about cross compiling

2009-01-08 Thread Robert Schwebel
If cross compiling it must be possible to overwrite the so_ext from the
outside.

Signed-off-by: Robert Schwebel 

---
 Lib/distutils/command/build_ext.py |2 ++
 1 file changed, 2 insertions(+)

Index: Python-3.0/Lib/distutils/command/build_ext.py
===
--- Python-3.0.orig/Lib/distutils/command/build_ext.py
+++ Python-3.0/Lib/distutils/command/build_ext.py
@@ -642,6 +642,8 @@ class build_ext(Command):
 ext_path[len(ext_path) - 1] = ext_path[len(ext_path) - 1][:8]
 # extensions in debug_mode are named 'module_d.pyd' under windows
 so_ext = get_config_var('SO')
+if os.environ.get('CROSS_COMPILING') == 'yes':
+so_ext = os.environ.get('SO')
 if os.name == 'nt' and self.debug:
 return os.path.join(*ext_path) + '_d' + so_ext
 return os.path.join(*ext_path) + so_ext

-- 
Pengutronix e.K.   | Dipl.-Ing. Robert Schwebel  |
Industrial Linux Solutions | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0|
Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |
___
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


[Python-Dev] [patch 5/8] fix chflags test

2009-01-08 Thread Robert Schwebel
When cross compiling, AC_TRY_RUN should not be used. This patch fixes it
in a way that for a cross scenario the test can be overwritten on the
command line.

Signed-off-by: Robert Schwebel 

---
 configure.in |   23 ---
 1 file changed, 20 insertions(+), 3 deletions(-)

Index: Python-3.0/configure.in
===
--- Python-3.0.orig/configure.in
+++ Python-3.0/configure.in
@@ -2494,7 +2494,7 @@ AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_
 # On Tru64, chflags seems to be present, but calling it will
 # exit Python
 AC_MSG_CHECKING(for chflags)
-AC_TRY_RUN([
+AC_RUN_IFELSE([
 #include 
 #include 
 int main(int argc, char*argv[])
@@ -2503,10 +2503,27 @@ int main(int argc, char*argv[])
 return 1;
   return 0;
 }
-],AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
-  AC_MSG_RESULT(yes),
+],[
+  AC_CACHE_VAL(ac_cv_have_chflags, ac_cv_have_chflags=yes)
+  AC_MSG_RESULT(yes)
+],[
+  AC_CACHE_VAL(ac_cv_have_chflags, ac_cv_have_chflags=no)
   AC_MSG_RESULT(no)
+],[
+  AC_CACHE_VAL(ac_cv_have_chflags, ac_cv_have_chflags=undef)
+  AC_MSG_RESULT([crosscompiling, ac_cv_have_chflags=$ac_cv_have_chflags])
+]
 )
+case $ac_cv_have_chflags in
+yes)
+  AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the 'chflags' function.)
+  ;;
+no)
+  ;;
+*)
+  AC_MSG_ERROR([please specify ac_cv_have_chflags=yes|no])
+  ;;
+esac
 
 AC_MSG_CHECKING(for lchflags)
 AC_TRY_RUN([

-- 
Pengutronix e.K.   | Dipl.-Ing. Robert Schwebel  |
Industrial Linux Solutions | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0|
Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |
___
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


[Python-Dev] [patch 4/8] configure.in fixes

2009-01-08 Thread Robert Schwebel
Add the necessary bits for feeding PYTHON_FOR_BUILD into the python
build process.

Patch is originally from here, adapted to python 3.0rc2:
http://bugs.gentoo.org/attachment.cgi?id=130627

Signed-off-by: Robert Schwebel 

---
 configure.in |   90 ---
 1 file changed, 86 insertions(+), 4 deletions(-)

Index: Python-3.0/configure.in
===
--- Python-3.0.orig/configure.in
+++ Python-3.0/configure.in
@@ -12,6 +12,11 @@ AC_INIT(python, PYTHON_VERSION, http://w
 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([
@@ -214,6 +219,7 @@ AC_SUBST(MACHDEP)
 AC_MSG_CHECKING(MACHDEP)
 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
@@ -234,6 +240,19 @@ then
 irix646) MACHDEP="irix6";;
'') MACHDEP="unknown";;
esac
+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
 fi

 # Some systems cannot stand _XOPEN_SOURCE being defined at all; they
@@ -503,9 +522,11 @@ if test -d casesensitivetestdir
 then
 AC_MSG_RESULT(yes)
 BUILDEXEEXT=.exe
+case_sensitive=no
 else
AC_MSG_RESULT(no)
BUILDEXEEXT=$EXEEXT
+   case_sensitive=yes
 fi
 rmdir CaseSensitiveTestDir
 
@@ -705,9 +726,9 @@ fi
 
 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)
@@ -3546,6 +3567,7 @@ else
 fi
 
 AC_MSG_CHECKING(for %zd printf() format support)
+AC_CACHE_VAL(ac_cv_printf_zd_format,
 AC_TRY_RUN([#include 
 #include 
 #include 
@@ -3582,7 +3604,9 @@ int main()
 }],
 [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_MSG_RESULT(no)))
+
 
 AC_CHECK_TYPE(socklen_t,,
   AC_DEFINE(socklen_t,int,
@@ -3633,6 +3657,64 @@ for dir in $SRCDIRS; do
 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="CROSS_TARGET=$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

-- 
Pengut

[Python-Dev] [patch 3/8] add readme

2009-01-08 Thread Robert Schwebel
This patch is originally from here:
http://bugs.gentoo.org/attachment.cgi?id=130627

Add documentation for cross compilation scenario.

Signed-off-by: Robert Schwebel 

---
 README |   44 
 1 file changed, 44 insertions(+)

Index: Python-3.0/README
===
--- Python-3.0.orig/README
+++ Python-3.0/README
@@ -156,6 +156,50 @@ there.  For example:
 should do a "make clean" at the toplevel first.)
 
 
+Cross Compiling
+---
+
+Python can be cross compiled by supplying different --build and --host
+parameters to configure. Python is compiled on the "build" system and
+executed on the "host" system. Cross compiling python requires a
+native Python on the build host, and a natively compiled tool `Pgen'.
+
+Before cross compiling, Python must first be compiled and installed on
+the build host. The configure script will use `cc' and `python', or
+environment variables CC_FOR_BUILD or PYTHON_FOR_BUILD, eg:
+
+   CC_FOR_BUILD=gcc-3.3 \
+   PYTHON_FOR_BUILD=python3.0 \
+   .../configure --build=i686-linux --host=i586-mingw32
+
+Cross compiling has been tested under linux, mileage may vary for
+other platforms.
+
+A few reminders on using configure to cross compile:
+
+- Cross compile tools must be in PATH,
+
+- Cross compile tools must be prefixed with the host type
+  (ie i586-mingw32-gcc, powerpc-darwin8-ranlib, ...),
+
+- CC, CXX, AR, and RANLIB must be undefined when running configure,
+  they will be auto-detected.
+
+- Autoconf must be stopped from autodetecting definitions for the
+  build machine.  This is easiest done by creating a config.cache
+  that overrides ac_cv_* variables appropriately.
+
+If you need a cross compiler, Debian ships several several (eg: avr,
+m68hc1x, mingw32), while dpkg-cross easily creates others. Otherwise,
+check out one of these cross toolchain projects:
+
+- crosstool:
+  http://www.kegel.com/crosstool
+
+- OSELAS.Toolchain:
+  http://www.pengutronix.de/oselas/toolchain/index_en.html
+
+
 Copyright and License Information
 -
 

-- 
Pengutronix e.K.   | Dipl.-Ing. Robert Schwebel  |
Industrial Linux Solutions | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0|
Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |
___
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


[Python-Dev] [patch 0/8] [RFC] cross compiling python 3.0

2009-01-08 Thread Robert Schwebel

Embedded people have cross compiled python for quite some time now, with
more or less success. These activities have taken place in various
embedded build systems, such as PTXdist, OpenEmbedded and others.

I suppose instead of wasting the time over and over again, without
proper review by the Python core developers, I would like to find out if
it is possible to get cross compilation support integrated in the
upstream tree. This patch series reflects what we currently have in
PTXdist. Please see it as an RFC.

It is probably not perfect yet, but I would like to see some feedback
from you Python guys out there. Do you see issues with these patches?
Would it be possible in general to get something similar to this series
into the Python mainline?

Robert

-- 
Pengutronix e.K.   | Dipl.-Ing. Robert Schwebel  |
Industrial Linux Solutions | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0|
Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |
___
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] [patch 0/8] [RFC] cross compiling python 3.0

2009-01-09 Thread Robert Schwebel
Hi Antoine,

[sorry for the double post, the mails didn't show up in the archive and
my procmail had missing slash at the end of the rule...]

> Thanks for those patches, but please post them to the issue tracker instead
> (http://bugs.python.org/). If each patch is for a distinct purpose, then open
> separate issues, otherwise please merge the patches into a single one.

Yup, will do.

I suspect that some of the design decisions need discussions; should
that also take place in the issue tracker, or here on the mailing list?

rsc
-- 
Pengutronix e.K.   | |
Industrial Linux Solutions | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0|
Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |
___
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com