summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/backend/backends.py22
-rw-r--r--mesonbuild/environment.py22
2 files changed, 23 insertions, 21 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
index 079b62dbd..a4be50f66 100644
--- a/mesonbuild/backend/backends.py
+++ b/mesonbuild/backend/backends.py
@@ -1987,12 +1987,9 @@ class Backend:
return []
def get_devenv(self) -> mesonlib.EnvironmentVariables:
- env = mesonlib.EnvironmentVariables()
extra_paths = set()
library_paths = set()
- build_machine = self.environment.machines[MachineChoice.BUILD]
host_machine = self.environment.machines[MachineChoice.HOST]
- need_wine = not build_machine.is_windows() and host_machine.is_windows()
for t in self.build.get_targets().values():
in_default_dir = t.should_install() and not t.get_install_dir()[2]
if t.for_machine != MachineChoice.HOST or not in_default_dir:
@@ -2012,24 +2009,7 @@ class Backend:
# LD_LIBRARY_PATH. This allows running system applications using
# that library.
library_paths.add(tdir)
- if need_wine:
- # Executable paths should be in both PATH and WINEPATH.
- # - Having them in PATH makes bash completion find it,
- # and make running "foo.exe" find it when wine-binfmt is installed.
- # - Having them in WINEPATH makes "wine foo.exe" find it.
- library_paths.update(extra_paths)
- if library_paths:
- if need_wine:
- env.prepend('WINEPATH', list(library_paths), separator=';')
- elif host_machine.is_windows() or host_machine.is_cygwin():
- extra_paths.update(library_paths)
- elif host_machine.is_darwin():
- env.prepend('DYLD_LIBRARY_PATH', list(library_paths))
- else:
- env.prepend('LD_LIBRARY_PATH', list(library_paths))
- if extra_paths:
- env.prepend('PATH', list(extra_paths))
- return env
+ return self.environment.get_env_for_paths(library_paths, extra_paths)
def compiler_to_generator_args(self, target: build.BuildTarget,
compiler: 'Compiler', output: str = '@OUTPUT@',
diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py
index 81a23404a..584d7366d 100644
--- a/mesonbuild/environment.py
+++ b/mesonbuild/environment.py
@@ -1000,3 +1000,25 @@ class Environment:
def has_exe_wrapper(self) -> bool:
return self.exe_wrapper and self.exe_wrapper.found()
+
+ def get_env_for_paths(self, library_paths: T.Set[str], extra_paths: T.Set[str]) -> mesonlib.EnvironmentVariables:
+ env = mesonlib.EnvironmentVariables()
+ need_wine = not self.machines.build.is_windows() and self.machines.host.is_windows()
+ if need_wine:
+ # Executable paths should be in both PATH and WINEPATH.
+ # - Having them in PATH makes bash completion find it,
+ # and make running "foo.exe" find it when wine-binfmt is installed.
+ # - Having them in WINEPATH makes "wine foo.exe" find it.
+ library_paths.update(extra_paths)
+ if library_paths:
+ if need_wine:
+ env.prepend('WINEPATH', list(library_paths), separator=';')
+ elif self.machines.host.is_windows() or self.machines.host.is_cygwin():
+ extra_paths.update(library_paths)
+ elif self.machines.host.is_darwin():
+ env.prepend('DYLD_LIBRARY_PATH', list(library_paths))
+ else:
+ env.prepend('LD_LIBRARY_PATH', list(library_paths))
+ if extra_paths:
+ env.prepend('PATH', list(extra_paths))
+ return env