aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/compilers
diff options
context:
space:
mode:
authorYang Bo <yb@rslinux.fun>2022-09-08 11:29:30 +0000
committerEli Schwartz <eschwartz93@gmail.com>2022-09-13 02:24:38 -0400
commit83d18d137dc50437a8263983e8883198c7bc41ed (patch)
tree0ba5ba3e09dd005fbe516342bb66f679b050099a /mesonbuild/compilers
parent719dd0d2a04592812194e8588279827ec52fc92e (diff)
downloadmeson-83d18d137dc50437a8263983e8883198c7bc41ed.zip
meson-83d18d137dc50437a8263983e8883198c7bc41ed.tar.gz
meson-83d18d137dc50437a8263983e8883198c7bc41ed.tar.bz2
Use os.path.realpath for default include paths testing in -isystem.
This ensures correct removal of default include paths in -isystem options when symbolic links are involved. A test for this is also added.
Diffstat (limited to 'mesonbuild/compilers')
-rw-r--r--mesonbuild/compilers/mixins/clike.py7
1 files changed, 4 insertions, 3 deletions
diff --git a/mesonbuild/compilers/mixins/clike.py b/mesonbuild/compilers/mixins/clike.py
index 696d01c..b1792eb 100644
--- a/mesonbuild/compilers/mixins/clike.py
+++ b/mesonbuild/compilers/mixins/clike.py
@@ -100,6 +100,7 @@ class CLikeCompilerArgs(arglist.CompilerArgs):
# Remove system/default include paths added with -isystem
default_dirs = self.compiler.get_default_include_dirs()
if default_dirs:
+ real_default_dirs = [os.path.realpath(i) for i in default_dirs]
bad_idx_list = [] # type: T.List[int]
for i, each in enumerate(new):
if not each.startswith('-isystem'):
@@ -108,11 +109,11 @@ class CLikeCompilerArgs(arglist.CompilerArgs):
# Remove the -isystem and the path if the path is a default path
if (each == '-isystem' and
i < (len(new) - 1) and
- new[i + 1] in default_dirs):
+ os.path.realpath(new[i + 1]) in real_default_dirs):
bad_idx_list += [i, i + 1]
- elif each.startswith('-isystem=') and each[9:] in default_dirs:
+ elif each.startswith('-isystem=') and os.path.realpath(each[9:]) in real_default_dirs:
bad_idx_list += [i]
- elif each[8:] in default_dirs:
+ elif os.path.realpath(each[8:]) in real_default_dirs:
bad_idx_list += [i]
for i in reversed(bad_idx_list):
new.pop(i)