diff options
Diffstat (limited to 'mesonbuild/dependencies.py')
-rw-r--r-- | mesonbuild/dependencies.py | 49 |
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 |