diff options
| author | Xavier Claessens <xclaessens@netflix.com> | 2024-10-26 17:49:10 -0400 |
|---|---|---|
| committer | Xavier Claessens <xclaesse@gmail.com> | 2024-10-28 09:03:46 -0400 |
| commit | 1840bb02ba741fb62a8d613a71431a8d7fa86a00 (patch) | |
| tree | da37ddffecea5d3e74afc2ca132a7d3b77399611 /mesonbuild/modules/external_project.py | |
| parent | 38dc9894add23691a948a8a733d3175e0b94b183 (diff) | |
| download | meson-1840bb02ba741fb62a8d613a71431a8d7fa86a00.tar.gz | |
external-project: Setup devenv to run programs
Diffstat (limited to 'mesonbuild/modules/external_project.py')
| -rw-r--r-- | mesonbuild/modules/external_project.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/mesonbuild/modules/external_project.py b/mesonbuild/modules/external_project.py index fb82a384d..9e283e026 100644 --- a/mesonbuild/modules/external_project.py +++ b/mesonbuild/modules/external_project.py @@ -81,6 +81,9 @@ class ExternalProject(NewExtensionModule): _l = self.env.coredata.get_option(OptionKey('libdir')) assert isinstance(_l, str), 'for mypy' self.libdir = Path(_l) + _l = self.env.coredata.get_option(OptionKey('bindir')) + assert isinstance(_l, str), 'for mypy' + self.bindir = Path(_l) _i = self.env.coredata.get_option(OptionKey('includedir')) assert isinstance(_i, str), 'for mypy' self.includedir = Path(_i) @@ -118,6 +121,7 @@ class ExternalProject(NewExtensionModule): d = [('PREFIX', '--prefix=@PREFIX@', self.prefix.as_posix()), ('LIBDIR', '--libdir=@PREFIX@/@LIBDIR@', self.libdir.as_posix()), + ('BINDIR', '--bindir=@PREFIX@/@BINDIR@', self.bindir.as_posix()), ('INCLUDEDIR', None, self.includedir.as_posix()), ] self._validate_configure_options(d, state) @@ -278,6 +282,7 @@ class ExternalProjectModule(ExtensionModule): def __init__(self, interpreter: 'Interpreter'): super().__init__(interpreter) + self.devenv: T.Optional[EnvironmentVariables] = None self.methods.update({'add_project': self.add_project, }) @@ -299,8 +304,19 @@ class ExternalProjectModule(ExtensionModule): kwargs['env'], kwargs['verbose'], kwargs['depends']) + abs_libdir = Path(project.install_dir, project.rel_prefix, project.libdir).as_posix() + abs_bindir = Path(project.install_dir, project.rel_prefix, project.bindir).as_posix() + env = state.environment.get_env_for_paths({abs_libdir}, {abs_bindir}) + if self.devenv is None: + self.devenv = env + else: + self.devenv.merge(env) return ModuleReturnValue(project, project.targets) + def postconf_hook(self, b: build.Build) -> None: + if self.devenv is not None: + b.devenv.append(self.devenv) + def initialize(interp: 'Interpreter') -> ExternalProjectModule: return ExternalProjectModule(interp) |
