aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/dependencies.py
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/dependencies.py')
-rw-r--r--mesonbuild/dependencies.py49
1 files changed, 37 insertions, 12 deletions
diff --git a/mesonbuild/dependencies.py b/mesonbuild/dependencies.py
index b76c3cb..82d1b75 100644
--- a/mesonbuild/dependencies.py
+++ b/mesonbuild/dependencies.py
@@ -1290,18 +1290,7 @@ class Python3Dependency(Dependency):
pass
if not self.is_found:
if mesonlib.is_windows():
- inc = sysconfig.get_path('include')
- platinc = sysconfig.get_path('platinclude')
- self.cargs = ['-I' + inc]
- if inc != platinc:
- self.cargs.append('-I' + platinc)
- # Nothing exposes this directly that I coulf find
- basedir = sysconfig.get_config_var('base')
- vernum = sysconfig.get_config_var('py_version_nodot')
- self.libs = ['-L{}/libs'.format(basedir),
- '-lpython{}'.format(vernum)]
- self.is_found = True
- self.version = sysconfig.get_config_var('py_version_short')
+ self._find_libpy3_windows(environment)
elif mesonlib.is_osx():
# In OSX the Python 3 framework does not have a version
# number in its name.
@@ -1315,6 +1304,42 @@ class Python3Dependency(Dependency):
else:
mlog.log('Dependency', mlog.bold(self.name), 'found:', mlog.red('NO'))
+ def _find_libpy3_windows(self, env):
+ '''
+ Find python3 libraries on Windows and also verify that the arch matches
+ what we are building for.
+ '''
+ pyarch = sysconfig.get_platform()
+ arch = detect_cpu_family(env.coredata.compilers)
+ if arch == 'x86':
+ arch = '32'
+ elif arch == 'x86_64':
+ arch = '64'
+ else:
+ # We can't cross-compile Python 3 dependencies on Windows yet
+ mlog.log('Unknown architecture {!r} for'.format(arch),
+ mlog.bold(self.name))
+ self.is_found = False
+ return
+ # Pyarch ends in '32' or '64'
+ if arch != pyarch[-2:]:
+ mlog.log('Need', mlog.bold(self.name),
+ 'for {}-bit, but found {}-bit'.format(arch, pyarch[-2:]))
+ self.is_found = False
+ return
+ inc = sysconfig.get_path('include')
+ platinc = sysconfig.get_path('platinclude')
+ self.cargs = ['-I' + inc]
+ if inc != platinc:
+ self.cargs.append('-I' + platinc)
+ # Nothing exposes this directly that I coulf find
+ basedir = sysconfig.get_config_var('base')
+ vernum = sysconfig.get_config_var('py_version_nodot')
+ self.libs = ['-L{}/libs'.format(basedir),
+ '-lpython{}'.format(vernum)]
+ self.version = sysconfig.get_config_var('py_version_short')
+ self.is_found = True
+
def get_compile_args(self):
return self.cargs