From 47508e217f83c6402c34834efa5aa341f5ce82bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Thu, 25 Jan 2018 22:25:36 +0000 Subject: [PATCH 1/3] tests: add test to make sure include_directories() order is maintained --- test cases/common/138 include order/inc1/hdr.h | 1 + test cases/common/138 include order/inc2/hdr.h | 1 + test cases/common/138 include order/meson.build | 4 ++++ test cases/common/138 include order/ordertest.c | 11 +++++++++++ 4 files changed, 17 insertions(+) create mode 100644 test cases/common/138 include order/inc1/hdr.h create mode 100644 test cases/common/138 include order/inc2/hdr.h create mode 100644 test cases/common/138 include order/ordertest.c diff --git a/test cases/common/138 include order/inc1/hdr.h b/test cases/common/138 include order/inc1/hdr.h new file mode 100644 index 000000000..9d755a830 --- /dev/null +++ b/test cases/common/138 include order/inc1/hdr.h @@ -0,0 +1 @@ +#define SOME_DEFINE 42 diff --git a/test cases/common/138 include order/inc2/hdr.h b/test cases/common/138 include order/inc2/hdr.h new file mode 100644 index 000000000..2ebcacaf4 --- /dev/null +++ b/test cases/common/138 include order/inc2/hdr.h @@ -0,0 +1 @@ +#undef SOME_DEFINE diff --git a/test cases/common/138 include order/meson.build b/test cases/common/138 include order/meson.build index c370bb1d1..9f275b866 100644 --- a/test cases/common/138 include order/meson.build +++ b/test cases/common/138 include order/meson.build @@ -30,3 +30,7 @@ f = executable('somefxe', 'sub4/main.c', test('eh', e) test('oh', f) + +# Test that the order in include_directories() is maintained +incs = include_directories('inc1', 'inc2') +executable('ordertest', 'ordertest.c', include_directories: incs) diff --git a/test cases/common/138 include order/ordertest.c b/test cases/common/138 include order/ordertest.c new file mode 100644 index 000000000..0d9173f35 --- /dev/null +++ b/test cases/common/138 include order/ordertest.c @@ -0,0 +1,11 @@ +#include "hdr.h" + +#if !defined(SOME_DEFINE) || SOME_DEFINE != 42 +#error "Should have picked up hdr.h from inc1/hdr.h" +#endif + +int +main (int c, char ** argv) +{ + return 0; +} From d10b7687ab1bdeed52e03e54f8571688b91b83a4 Mon Sep 17 00:00:00 2001 From: Maxim Dzabraev Date: Fri, 26 Jan 2018 02:37:06 +0300 Subject: [PATCH 2/3] Fix bug include_directories([p1,p2]) produces -Ip2 -Ip1 (reversed order) --- mesonbuild/backend/ninjabackend.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 6ab67fb12..f161d5736 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -2106,7 +2106,10 @@ rule FORTRAN_DEP_HACK # Hence, we must reverse the list so that the order is preserved. for i in reversed(target.get_include_dirs()): basedir = i.get_curdir() - for d in i.get_incdirs(): + # We should iterate include dirs in reversed orders because + # -Ipath will add to begin of array. And without reverse + # flags will be added in reversed order. + for d in reversed(i.get_incdirs()): # Avoid superfluous '/.' at the end of paths when d is '.' if d not in ('', '.'): expdir = os.path.join(basedir, d) From ea6e9298fa585244112e4519513690c52959039e Mon Sep 17 00:00:00 2001 From: Maxim Dzabraev Date: Sat, 27 Jan 2018 18:31:08 +0300 Subject: [PATCH 3/3] keep include paths order --- mesonbuild/backend/vs2010backend.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mesonbuild/backend/vs2010backend.py b/mesonbuild/backend/vs2010backend.py index 057e7c9e9..60805c62f 100644 --- a/mesonbuild/backend/vs2010backend.py +++ b/mesonbuild/backend/vs2010backend.py @@ -768,7 +768,8 @@ class Vs2010Backend(backends.Backend): # These are per-target, but we still add them as per-file because we # need them to be looked in first. for d in reversed(target.get_include_dirs()): - for i in d.get_incdirs(): + # reversed is used to keep order of includes + for i in reversed(d.get_incdirs()): curdir = os.path.join(d.get_curdir(), i) args.append('-I' + self.relpath(curdir, target.subdir)) # build dir args.append('-I' + os.path.join(proj_to_src_root, curdir)) # src dir