aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/backend/ninjabackend.py28
1 files changed, 17 insertions, 11 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index 9acce5a..7581f27 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -1435,6 +1435,23 @@ rule FORTRAN_DEP_HACK
if curdir == '':
curdir = '.'
commands += compiler.get_include_args(curdir, False)
+ # -I args work differently than other ones. In them the
+ # first found directory is used whereas for other flags
+ # (such as -ffoo -fno-foo) the latest one is used.
+ # Therefore put the internal include directories here
+ # at the beginning so they override args coming from
+ # e.g. pkg-config.
+ for i in target.get_include_dirs():
+ basedir = i.get_curdir()
+ for d in i.get_incdirs():
+ expdir = os.path.join(basedir, d)
+ srctreedir = os.path.join(self.build_to_src, expdir)
+ bargs = compiler.get_include_args(expdir, i.is_system)
+ sargs = compiler.get_include_args(srctreedir, i.is_system)
+ commands += bargs
+ commands += sargs
+ for d in i.get_extra_build_dirs():
+ commands += compiler.get_include_args(d, i.is_system)
for d in target.external_deps:
if d.need_threads():
commands += compiler.thread_flags()
@@ -1476,17 +1493,6 @@ rule FORTRAN_DEP_HACK
i = os.path.join(self.get_target_private_dir(target), compiler.get_pch_name(pchlist[0]))
arr.append(i)
pch_dep = arr
- for i in target.get_include_dirs():
- basedir = i.get_curdir()
- for d in i.get_incdirs():
- expdir = os.path.join(basedir, d)
- srctreedir = os.path.join(self.build_to_src, expdir)
- bargs = compiler.get_include_args(expdir, i.is_system)
- sargs = compiler.get_include_args(srctreedir, i.is_system)
- commands += bargs
- commands += sargs
- for d in i.get_extra_build_dirs():
- commands += compiler.get_include_args(d, i.is_system)
custom_target_include_dirs = []
for i in target.generated:
if isinstance(i, build.CustomTarget):