summaryrefslogtreecommitdiff
path: root/package/python2/patches/patch-setup_py
blob: bf8e90c9d338f3e01f780e2d2c0606ecf1c3a294 (plain)
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.13.orig/setup.py	2016-12-17 21:05:07.000000000 +0100
+++ Python-2.7.13/setup.py	2017-03-16 19:45:12.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:
             # Note that, as of Xcode 7, Apple SDKs may contain textual stub
             # libraries with .tbd extensions rather than the normal .dylib
             # shared libraries installed in /.  The Apple compiler tool
@@ -145,7 +145,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 ]
 
@@ -178,6 +178,7 @@ class PyBuildExt(build_ext):
 
     def build_extensions(self):
 
+        self.compiler.library_dirs = []
         # Detect which modules should be compiled
         missing = self.detect_modules()
 
@@ -299,6 +300,7 @@ class PyBuildExt(build_ext):
 
     def build_extension(self, ext):
 
+
         if ext.name == '_ctypes':
             if not self.configure_ctypes(ext):
                 return
@@ -460,7 +462,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.
@@ -497,7 +500,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
@@ -515,8 +519,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',
@@ -550,7 +559,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.