--- Python-2.7.5.orig/setup.py 2013-05-12 05:32:54.000000000 +0200 +++ Python-2.7.5/setup.py 2014-02-03 17:07:52.000000000 +0100 @@ -74,7 +74,7 @@ def find_file(filename, std_dirs, paths) 'paths' is a list of additional locations to check; if the file is found in one of them, the resulting list will contain the directory. """ - if host_platform == 'darwin': + if host_platform == 'darwin' and not cross_compiling: # Honor the MacOSX SDK setting when one was specified. # An SDK is a directory with the same structure as a real # system, but with only header files and libraries. @@ -84,7 +84,7 @@ def find_file(filename, std_dirs, paths) for dir in std_dirs: f = os.path.join(dir, filename) - if host_platform == 'darwin' and is_macosx_sdk_path(dir): + if host_platform == 'darwin' and is_macosx_sdk_path(dir) and not cross_compiling: f = os.path.join(sysroot, dir[1:], filename) if os.path.exists(f): return [] @@ -93,7 +93,7 @@ def find_file(filename, std_dirs, paths) for dir in paths: f = os.path.join(dir, filename) - if host_platform == 'darwin' and is_macosx_sdk_path(dir): + if host_platform == 'darwin' and is_macosx_sdk_path(dir) and not cross_compiling: f = os.path.join(sysroot, dir[1:], filename) if os.path.exists(f): @@ -107,7 +107,7 @@ def find_library_file(compiler, libname, if result is None: return None - if host_platform == 'darwin': + if host_platform == 'darwin' and not cross_compiling: sysroot = macosx_sdk_root() # Check whether the found file is in one of the standard directories @@ -116,7 +116,7 @@ def find_library_file(compiler, libname, # Ensure path doesn't end with path separator p = p.rstrip(os.sep) - if host_platform == 'darwin' and is_macosx_sdk_path(p): + if host_platform == 'darwin' and is_macosx_sdk_path(p) and not cross_compiling: if os.path.join(sysroot, p[1:]) == dirname: return [ ] @@ -129,7 +129,7 @@ def find_library_file(compiler, libname, # Ensure path doesn't end with path separator p = p.rstrip(os.sep) - if host_platform == 'darwin' and is_macosx_sdk_path(p): + if host_platform == 'darwin' and is_macosx_sdk_path(p) and not cross_compiling: if os.path.join(sysroot, p[1:]) == dirname: return [ p ] @@ -162,6 +162,7 @@ class PyBuildExt(build_ext): def build_extensions(self): + self.compiler.library_dirs = [] # Detect which modules should be compiled missing = self.detect_modules() @@ -281,6 +282,7 @@ class PyBuildExt(build_ext): def build_extension(self, ext): + if ext.name == '_ctypes': if not self.configure_ctypes(ext): return @@ -437,10 +439,12 @@ class PyBuildExt(build_ext): 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 not cross_compiling: + add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib') + add_dir_to_list(self.compiler.include_dirs, '/usr/local/include') self.add_gcc_paths() - self.add_multiarch_paths() + if not cross_compiling: + self.add_multiarch_paths() # Add paths specified in the environment variables LDFLAGS and # CPPFLAGS for header and library files. @@ -477,7 +481,8 @@ class PyBuildExt(build_ext): add_dir_to_list(dir_list, directory) if os.path.normpath(sys.prefix) != '/usr' \ - and not sysconfig.get_config_var('PYTHONFRAMEWORK'): + and not sysconfig.get_config_var('PYTHONFRAMEWORK') \ + and not cross_compiling: # OSX note: Don't add LIBDIR and INCLUDEDIR to building a framework # (PYTHONFRAMEWORK is set) to avoid # linking problems when # building a framework with different architectures than @@ -495,8 +500,13 @@ 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. + if cross_compiling: + add_dir_to_list(self.compiler.library_dirs, + sysconfig.get_config_var('srcdir')) + inc_dirs = self.compiler.include_dirs[:] lib_dirs = self.compiler.library_dirs[:] + if not cross_compiling: for d in ( '/usr/include', @@ -530,7 +540,7 @@ class PyBuildExt(build_ext): if host_platform == 'hp-ux11': lib_dirs += ['/usr/lib/hpux64', '/usr/lib/hpux32'] - if host_platform == 'darwin': + if host_platform == 'darwin' and not cross_compiling: # This should work on any unixy platform ;-) # If the user has bothered specifying additional -I and -L flags # in OPT and LDFLAGS we might as well use them here.