diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2021-04-15 19:00:39 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2021-04-16 18:14:01 +0300 |
commit | 48e38fbaeb915aee5973c4fba1b2ac573ccac94a (patch) | |
tree | c3957489ddf9f7d768207d970b80c3ba14aee0f5 /mesonbuild/backend/backends.py | |
parent | aaae1b2a30b656e5a47b0dae96603d3ad8ec5d12 (diff) | |
download | meson-48e38fbaeb915aee5973c4fba1b2ac573ccac94a.zip meson-48e38fbaeb915aee5973c4fba1b2ac573ccac94a.tar.gz meson-48e38fbaeb915aee5973c4fba1b2ac573ccac94a.tar.bz2 |
Xcode: fix custom targets that produce objs and libs.
Diffstat (limited to 'mesonbuild/backend/backends.py')
-rw-r--r-- | mesonbuild/backend/backends.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py index 3482f3d..ea5f30d 100644 --- a/mesonbuild/backend/backends.py +++ b/mesonbuild/backend/backends.py @@ -1149,6 +1149,30 @@ class Backend: # ${BUILDDIR}/${BUILDTYPE} instead, this becomes unnecessary. return self.get_target_dir(target) + @lru_cache(maxsize=None) + def get_normpath_target(self, source) -> str: + return os.path.normpath(source) + + def get_custom_target_dir_include_args(self, target, compiler, *, absolute_path=False): + custom_target_include_dirs = [] + for i in target.get_generated_sources(): + # Generator output goes into the target private dir which is + # already in the include paths list. Only custom targets have their + # own target build dir. + if not isinstance(i, (build.CustomTarget, build.CustomTargetIndex)): + continue + idir = self.get_normpath_target(self.get_custom_target_output_dir(i)) + if not idir: + idir = '.' + if absolute_path: + idir = os.path.join(self.environment.get_build_dir(), idir) + if idir not in custom_target_include_dirs: + custom_target_include_dirs.append(idir) + incs = [] + for i in custom_target_include_dirs: + incs += compiler.get_include_args(i, False) + return incs + def eval_custom_target_command(self, target, absolute_outputs=False): # We want the outputs to be absolute only when using the VS backend # XXX: Maybe allow the vs backend to use relative paths too? |