1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
--- Python-2.7.9.orig/setup.py 2014-12-10 17:00:01.000000000 +0100
+++ Python-2.7.9/setup.py 2015-04-11 08:37:49.609444500 +0200
@@ -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()
@@ -283,6 +284,7 @@ class PyBuildExt(build_ext):
def build_extension(self, ext):
+
if ext.name == '_ctypes':
if not self.configure_ctypes(ext):
return
@@ -444,7 +446,8 @@ class PyBuildExt(build_ext):
add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
if cross_compiling:
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.
@@ -481,7 +484,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
@@ -499,8 +503,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',
@@ -534,7 +543,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.
|