diff mbox series

meson: Set implicit_include_directories to false

Message ID CA+pCdY09+OQfXq3YmRNuQE59ACOq7Py2q4hqOwgq4PnepCXhTA@mail.gmail.com
State New
Headers show
Series meson: Set implicit_include_directories to false | expand

Commit Message

Katsuhiro Ueno April 29, 2021, 2:43 a.m. UTC
Without this, libvixl cannot be compiled with macOS 11.3 SDK due to
include file name conflict (usr/include/c++/v1/version conflicts with
VERSION).

Signed-off-by: Katsuhiro Ueno <uenobk@gmail.com>
---
 meson.build | 1 +
 1 file changed, 1 insertion(+)

Comments

Paolo Bonzini April 30, 2021, 7:48 a.m. UTC | #1
On 29/04/21 04:43, Katsuhiro Ueno wrote:
> Without this, libvixl cannot be compiled with macOS 11.3 SDK due to
> include file name conflict (usr/include/c++/v1/version conflicts with
> VERSION).
> 
> Signed-off-by: Katsuhiro Ueno <uenobk@gmail.com>
> ---
>   meson.build | 1 +
>   1 file changed, 1 insertion(+)
> 
> diff --git a/meson.build b/meson.build
> index c6f4b0cf5e..d007bff8c3 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -2129,6 +2129,7 @@ common_all = common_ss.apply(config_all, strict: false)
>   common_all = static_library('common',
>                               build_by_default: false,
>                               sources: common_all.sources() + genh,
> +                            implicit_include_directories: false,
>                               dependencies: common_all.dependencies(),
>                               name_suffix: 'fa')
> 

Can you include the difference in the include paths (the -I and -iquote 
arguments)?  There are many cases in which we rely on having the current 
source directory in the build path, for example all inclusions of "trace.h".

Paolo
Katsuhiro Ueno May 1, 2021, 2:08 a.m. UTC | #2
2021-04-30 16:48 Paolo Bonzini <pbonzini@redhat.com>:
>
> On 29/04/21 04:43, Katsuhiro Ueno wrote:
> > Without this, libvixl cannot be compiled with macOS 11.3 SDK due to
> > include file name conflict (usr/include/c++/v1/version conflicts with
> > VERSION).
> >
> > Signed-off-by: Katsuhiro Ueno <uenobk@gmail.com>
> > ---
> >   meson.build | 1 +
> >   1 file changed, 1 insertion(+)
> >
> > diff --git a/meson.build b/meson.build
> > index c6f4b0cf5e..d007bff8c3 100644
> > --- a/meson.build
> > +++ b/meson.build
> > @@ -2129,6 +2129,7 @@ common_all = common_ss.apply(config_all, strict: false)
> >   common_all = static_library('common',
> >                               build_by_default: false,
> >                               sources: common_all.sources() + genh,
> > +                            implicit_include_directories: false,
> >                               dependencies: common_all.dependencies(),
> >                               name_suffix: 'fa')
> >
>
> Can you include the difference in the include paths (the -I and -iquote
> arguments)?  There are many cases in which we rely on having the current
> source directory in the build path, for example all inclusions of "trace.h".

This only removes -I.. (current (top-level) source directory) from the
arguments. The meson manual says that it also removes -I. (current
(top-level) build directory) but -I. is still in the arguments (I am
not sure why). This does not change any -iquote argument.

As far as I know, this does not affect the inclusions of "trace.h"
because each "trace.h" is in the same directory as the files that
include it, and the top-level build directory, which has the "trace"
directory containing generated "trace-*.h" files, is still in the
include path.

--
Katsuhiro Ueno
Alexander Graf May 16, 2021, 2:05 p.m. UTC | #3
On 29.04.21 04:43, Katsuhiro Ueno wrote:
> Without this, libvixl cannot be compiled with macOS 11.3 SDK due to
> include file name conflict (usr/include/c++/v1/version conflicts with
> VERSION).
>
> Signed-off-by: Katsuhiro Ueno <uenobk@gmail.com>


I can confirm that this patch is required to build QEMU with current
XCode. I saw an identical patch from Akihiko (CC'ed) as well.

Tested-by: Alexander Graf <agraf@csgraf.de>


Alex
Paolo Bonzini May 17, 2021, 11:41 a.m. UTC | #4
On 01/05/21 04:08, Katsuhiro Ueno wrote:
> 2021-04-30 16:48 Paolo Bonzini <pbonzini@redhat.com>:
>>
>> On 29/04/21 04:43, Katsuhiro Ueno wrote:
>>> Without this, libvixl cannot be compiled with macOS 11.3 SDK due to
>>> include file name conflict (usr/include/c++/v1/version conflicts with
>>> VERSION).
>>>
>>> Signed-off-by: Katsuhiro Ueno <uenobk@gmail.com>
>>> ---
>>>    meson.build | 1 +
>>>    1 file changed, 1 insertion(+)
>>>
>>> diff --git a/meson.build b/meson.build
>>> index c6f4b0cf5e..d007bff8c3 100644
>>> --- a/meson.build
>>> +++ b/meson.build
>>> @@ -2129,6 +2129,7 @@ common_all = common_ss.apply(config_all, strict: false)
>>>    common_all = static_library('common',
>>>                                build_by_default: false,
>>>                                sources: common_all.sources() + genh,
>>> +                            implicit_include_directories: false,
>>>                                dependencies: common_all.dependencies(),
>>>                                name_suffix: 'fa')
>>>
>>
>> Can you include the difference in the include paths (the -I and -iquote
>> arguments)?  There are many cases in which we rely on having the current
>> source directory in the build path, for example all inclusions of "trace.h".
> 
> This only removes -I.. (current (top-level) source directory) from the
> arguments. The meson manual says that it also removes -I. (current
> (top-level) build directory) but -I. is still in the arguments (I am
> not sure why). This does not change any -iquote argument.
> 
> As far as I know, this does not affect the inclusions of "trace.h"
> because each "trace.h" is in the same directory as the files that
> include it, and the top-level build directory, which has the "trace"
> directory containing generated "trace-*.h" files, is still in the
> include path.

Queued, thanks.  It looks like "implicit" only refers to the directory 
that meson.build lies in.

It would be nicer to have _all_ targets in meson.build have 
implicit_include_directories: false, since we would have the same 
problem for other C++ sources, but that can be done later.

Paolo
diff mbox series

Patch

diff --git a/meson.build b/meson.build
index c6f4b0cf5e..d007bff8c3 100644
--- a/meson.build
+++ b/meson.build
@@ -2129,6 +2129,7 @@  common_all = common_ss.apply(config_all, strict: false)
 common_all = static_library('common',
                             build_by_default: false,
                             sources: common_all.sources() + genh,
+                            implicit_include_directories: false,
                             dependencies: common_all.dependencies(),
                             name_suffix: 'fa')