aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2021-04-08 18:41:10 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2021-04-09 16:51:42 +0300
commit9fb0abb754b42839880489447f599c59bcff8371 (patch)
treee374158c66ab20c7d7fa1eb758c9f0e84095630e
parent59306c45c525023cfab20a2f6466d812b008c473 (diff)
downloadmeson-9fb0abb754b42839880489447f599c59bcff8371.zip
meson-9fb0abb754b42839880489447f599c59bcff8371.tar.gz
meson-9fb0abb754b42839880489447f599c59bcff8371.tar.bz2
Write include dirs with absolute paths in the Xcode backend, relative ones do not seem to work.
-rw-r--r--mesonbuild/backend/backends.py11
-rw-r--r--mesonbuild/backend/xcodebackend.py9
2 files changed, 13 insertions, 7 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
index 72e0e13..0a3875c 100644
--- a/mesonbuild/backend/backends.py
+++ b/mesonbuild/backend/backends.py
@@ -265,10 +265,13 @@ class Backend:
tmppath = os.path.normpath(os.path.join(self.build_to_src, curdir))
return compiler.get_include_args(tmppath, False)
- def get_build_dir_include_args(self, target, compiler):
- curdir = target.get_subdir()
- if curdir == '':
- curdir = '.'
+ def get_build_dir_include_args(self, target, compiler, *, absolute_path=False):
+ if absolute_path:
+ curdir = os.path.join(self.build_dir, target.get_subdir())
+ else:
+ curdir = target.get_subdir()
+ if curdir == '':
+ curdir = '.'
return compiler.get_include_args(curdir, False)
def get_target_filename_for_linking(self, target):
diff --git a/mesonbuild/backend/xcodebackend.py b/mesonbuild/backend/xcodebackend.py
index b37ee2f..eb5f7cf 100644
--- a/mesonbuild/backend/xcodebackend.py
+++ b/mesonbuild/backend/xcodebackend.py
@@ -879,7 +879,10 @@ class XCodeBackend(backends.Backend):
langname = LANGNAMEMAP[lang]
lang_cargs = cargs
if compiler and target.implicit_include_directories:
- lang_cargs += self.get_build_dir_include_args(target, compiler)
+ # It is unclear what is the cwd when xcode runs. -I. does not seem to
+ # add the root build dir to the search path. So add an absolute path instead.
+ # This may break reproducible builds, in which case patches are welcome.
+ lang_cargs += self.get_build_dir_include_args(target, compiler, absolute_path=True)
langargs[langname] = args
langargs[langname] += lang_cargs
symroot = os.path.join(self.environment.get_build_dir(), target.subdir)
@@ -922,7 +925,7 @@ class XCodeBackend(backends.Backend):
settings_dict.add_item('LIBRARY_SEARCH_PATHS', '""')
if isinstance(target, build.SharedLibrary):
settings_dict.add_item('LIBRARY_STYLE', 'DYNAMIC')
- self.add_otterargs(settings_dict, langargs)
+ self.add_otherargs(settings_dict, langargs)
settings_dict.add_item('OTHER_LDFLAGS', f'"{ldstr}"')
settings_dict.add_item('OTHER_REZFLAGS', '""')
settings_dict.add_item('PRODUCT_NAME', product_name)
@@ -935,7 +938,7 @@ class XCodeBackend(backends.Backend):
warn_array.add_item('"$(inherited)"')
bt_dict.add_item('name', buildtype)
- def add_otterargs(self, settings_dict, langargs):
+ def add_otherargs(self, settings_dict, langargs):
for langname, args in langargs.items():
if args:
# FIXME, proper quoting