diff --git a/mesonbuild/dependencies/python.py b/mesonbuild/dependencies/python.py index 38e3d5f..6427980 100644 --- a/mesonbuild/dependencies/python.py +++ b/mesonbuild/dependencies/python.py @@ -208,7 +208,8 @@ class PythonSystemDependency(SystemDependency, _PythonDependencyBase): # compile args + verdot = self.variables.get('py_version_short') inc_paths = mesonlib.OrderedSet([ self.variables.get('INCLUDEPY'), - self.paths.get('include'), + self.paths.get('include') + f'/../../../include/python${verdot}', self.paths.get('platinclude')]) self.compile_args += ['-I' + path for path in inc_paths if path] @@ -279,9 +279,9 @@ class PythonSystemDependency(SystemDependency, _PythonDependencyBase): else: libpath = Path(f'python{vernum}.dll') else: if limited_api: vernum = vernum[0] - libpath = Path('libs') / f'python{vernum}.lib' + libpath = Path('libs') / f'..' / f'..' / f'..' / f'lib' / f'python{vernum}.lib' # For a debug build, pyconfig.h may force linking with # pythonX_d.lib (see meson#10776). This cannot be avoided # and won't work unless we also have a debug build of @@ -296,6 +296,8 @@ class PythonSystemDependency(SystemDependency, _PythonDependencyBase): vscrt = self.env.coredata.options[mesonlib.OptionKey('b_vscrt')].value if vscrt in {'mdd', 'mtd', 'from_buildtype', 'static_from_buildtype'}: vscrt_debug = True + if is_debug_build: + libpath = Path('libs') / f'..' / f'..' / f'..' / f'debug/lib' / f'python{vernum}_d.lib' if is_debug_build and vscrt_debug and not self.variables.get('Py_DEBUG'): mlog.warning(textwrap.dedent('''\ Using a debug build type with MSVC or an MSVC-compatible compiler @@ -390,10 +390,7 @@ def python_factory(env: 'Environment', for_machine: 'MachineChoice', set_env('PKG_CONFIG_PATH', old_pkg_path) candidates.append(functools.partial(wrap_in_pythons_pc_dir, pkg_name, env, kwargs, installation)) + candidates.append(functools.partial(PythonPkgConfigDependency, pkg_name, env, kwargs, installation)) - # We only need to check both, if a python install has a LIBPC. It might point to the wrong location, - # e.g. relocated / cross compilation, but the presence of LIBPC indicates we should definitely look for something. - if pkg_libdir is not None: - candidates.append(functools.partial(PythonPkgConfigDependency, pkg_name, env, kwargs, installation)) else: candidates.append(functools.partial(PkgConfigDependency, 'python3', env, kwargs))