aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2021-08-20 18:05:09 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2021-08-21 22:33:47 +0300
commit267d5385d441f48ea369b6d3927deab8a0066286 (patch)
treec2a07e3530ecd3112e485592035d5171c7bdc8b6
parent12e7b3afcf0b7772c929b75abd7c80f0454e2c48 (diff)
downloadmeson-267d5385d441f48ea369b6d3927deab8a0066286.zip
meson-267d5385d441f48ea369b6d3927deab8a0066286.tar.gz
meson-267d5385d441f48ea369b6d3927deab8a0066286.tar.bz2
Path special casing for the Xcode backend.
-rw-r--r--mesonbuild/backend/backends.py6
-rw-r--r--mesonbuild/backend/xcodebackend.py6
-rw-r--r--test cases/common/22 object extraction/check-obj.py2
3 files changed, 11 insertions, 3 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
index 658f031..d71cae3 100644
--- a/mesonbuild/backend/backends.py
+++ b/mesonbuild/backend/backends.py
@@ -1269,7 +1269,8 @@ class Backend:
elif isinstance(i, build.GeneratedList):
fname = [os.path.join(self.get_target_private_dir(target), p) for p in i.get_outputs()]
elif isinstance(i, build.ExtractedObjects):
- fname = [os.path.join(self.get_target_private_dir(i.target), p) for p in i.get_outputs(self)]
+ outputs = i.get_outputs(self)
+ fname = self.get_extracted_obj_paths(i.target, outputs)
else:
fname = [i.rel_to_builddir(self.build_to_src)]
if target.absolute_paths:
@@ -1277,6 +1278,9 @@ class Backend:
srcs += fname
return srcs
+ def get_extracted_obj_paths(self, target: build.BuildTarget, outputs: T.List[str]) -> T.List[str]:
+ return [os.path.join(self.get_target_private_dir(target), p) for p in outputs]
+
def get_custom_target_depend_files(self, target: build.CustomTarget, absolute_paths: bool = False) -> T.List[str]:
deps: T.List[str] = []
for i in target.depend_files:
diff --git a/mesonbuild/backend/xcodebackend.py b/mesonbuild/backend/xcodebackend.py
index d9f5bfa..2d1caae 100644
--- a/mesonbuild/backend/xcodebackend.py
+++ b/mesonbuild/backend/xcodebackend.py
@@ -250,7 +250,11 @@ class XCodeBackend(backends.Backend):
if isinstance(source, mesonlib.File):
source = source.fname
stem = os.path.splitext(os.path.basename(source))[0]
- return f'{project}.build/{buildtype}/{tname}.build/Objects-normal/{arch}/{stem}.o'
+ obj_path = f'{project}.build/{buildtype}/{tname}.build/Objects-normal/{arch}/{stem}.o'
+ return obj_path
+
+ def get_extracted_obj_paths(self, target: build.BuildTarget, outputs: T.List[str])-> T.List[str]:
+ return outputs
def generate(self):
self.serialize_tests()
diff --git a/test cases/common/22 object extraction/check-obj.py b/test cases/common/22 object extraction/check-obj.py
index 99c2cc5..d2df930 100644
--- a/test cases/common/22 object extraction/check-obj.py
+++ b/test cases/common/22 object extraction/check-obj.py
@@ -15,7 +15,7 @@ if sys.argv[1] == 'ninja':
for obj in sys.argv[2:]:
if not os.path.exists(obj):
- sys.exit(1)
+ sys.exit(f'File {obj} not found.')
if sys.argv[1] == 'ninja' and obj not in output:
sys.exit(1)
print('Verified', obj)