Do not add custom target dir automatically when implicit false.
This commit is contained in:
parent
448b11cb7f
commit
e80ff985fb
|
@ -0,0 +1,17 @@
|
||||||
|
## Do not add custom target dir to header path if `implicit_include_directories` is `false`
|
||||||
|
|
||||||
|
If you do the following:
|
||||||
|
|
||||||
|
```meson
|
||||||
|
# in some subdirectory
|
||||||
|
gen_h = custom_target(...)
|
||||||
|
# in some other directory
|
||||||
|
executable('foo', 'foo.c', gen_h)
|
||||||
|
```
|
||||||
|
|
||||||
|
then the output directory of the custom target is automatically added
|
||||||
|
to the header search path. This is convenient, but sometimes it can
|
||||||
|
lead to problems. Starting with this version, the directory will no
|
||||||
|
longer be put in the search path if the target has
|
||||||
|
`implicit_include_directories: false`. In these cases you need to set
|
||||||
|
up the path manually with `include_directories`.
|
|
@ -2377,10 +2377,8 @@ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47485'''))
|
||||||
commands += self.generate_basic_compiler_args(target, compiler, no_warn_args)
|
commands += self.generate_basic_compiler_args(target, compiler, no_warn_args)
|
||||||
# Add custom target dirs as includes automatically, but before
|
# Add custom target dirs as includes automatically, but before
|
||||||
# target-specific include directories.
|
# target-specific include directories.
|
||||||
# XXX: Not sure if anyone actually uses this? It can cause problems in
|
if target.implicit_include_directories:
|
||||||
# situations which increase the likelihood for a header name collision,
|
commands += self.get_custom_target_dir_include_args(target, compiler)
|
||||||
# such as in subprojects.
|
|
||||||
commands += self.get_custom_target_dir_include_args(target, compiler)
|
|
||||||
# Add include dirs from the `include_directories:` kwarg on the target
|
# Add include dirs from the `include_directories:` kwarg on the target
|
||||||
# and from `include_directories:` of internal deps of the target.
|
# and from `include_directories:` of internal deps of the target.
|
||||||
#
|
#
|
||||||
|
|
|
@ -5616,6 +5616,23 @@ class AllPlatformTests(BasePlatformTests):
|
||||||
self.assertEqual(0, output.count('File reformatted:'))
|
self.assertEqual(0, output.count('File reformatted:'))
|
||||||
self.build('clang-format-check')
|
self.build('clang-format-check')
|
||||||
|
|
||||||
|
def test_custom_target_implicit_include(self):
|
||||||
|
testdir = os.path.join(self.unit_test_dir, '94 custominc')
|
||||||
|
self.init(testdir)
|
||||||
|
self.build()
|
||||||
|
compdb = self.get_compdb()
|
||||||
|
matches = 0
|
||||||
|
for c in compdb:
|
||||||
|
if 'prog.c' in c['file']:
|
||||||
|
self.assertNotIn('easytogrepfor', c['command'])
|
||||||
|
matches += 1
|
||||||
|
self.assertEqual(matches, 1)
|
||||||
|
matches = 0
|
||||||
|
for c in compdb:
|
||||||
|
if 'prog2.c' in c['file']:
|
||||||
|
self.assertIn('easytogrepfor', c['command'])
|
||||||
|
matches += 1
|
||||||
|
self.assertEqual(matches, 1)
|
||||||
|
|
||||||
class FailureTests(BasePlatformTests):
|
class FailureTests(BasePlatformTests):
|
||||||
'''
|
'''
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
f = open(sys.argv[1], 'w')
|
||||||
|
f.write('#define RETURN_VALUE 0')
|
||||||
|
f.close()
|
|
@ -0,0 +1,3 @@
|
||||||
|
genh = custom_target('header',
|
||||||
|
output: 'generated.h',
|
||||||
|
command: [find_program('genh.py'), '@OUTPUT@'])
|
|
@ -0,0 +1,5 @@
|
||||||
|
#include<generated.h>
|
||||||
|
|
||||||
|
int func(void) {
|
||||||
|
return RETURN_VALUE;
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
project('implicit custom dirs', 'c')
|
||||||
|
|
||||||
|
subdir('easytogrepfor')
|
||||||
|
|
||||||
|
l = static_library('helper', 'helper.c', genh)
|
||||||
|
d = declare_dependency(link_with: l, sources: genh)
|
||||||
|
executable('prog', 'prog.c', dependencies: d, implicit_include_directories: false)
|
||||||
|
|
||||||
|
executable('prog2', 'prog2.c', dependencies: d)
|
|
@ -0,0 +1,9 @@
|
||||||
|
#include<stdlib.h>
|
||||||
|
|
||||||
|
int func(void);
|
||||||
|
|
||||||
|
int main(int argc, char **argv) {
|
||||||
|
(void)argc;
|
||||||
|
(void)(argv);
|
||||||
|
return func();
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
#include<stdlib.h>
|
||||||
|
#include<generated.h>
|
||||||
|
|
||||||
|
int func(void);
|
||||||
|
|
||||||
|
int main(int argc, char **argv) {
|
||||||
|
(void)argc;
|
||||||
|
(void)(argv);
|
||||||
|
return func() + RETURN_VALUE;
|
||||||
|
}
|
Loading…
Reference in New Issue