On 7/2/21 22:33, Stefan Weil wrote:
> On 07.02.21 21:12, Richard Henderson wrote:
>> On 2/7/21 11:52 AM, Peter Maydell wrote:
>>> On Sun, 7 Feb 2021 at 17:41, Richard Henderson
>>> <[email protected]> wrote:
>>>>
>>>> On 2/7/21 8:25 AM, Stefan Weil wrote:
>>>>>> +#include "qemu-common.h"
>>>>>> +#include "tcg/tcg.h"           /* MAX_OPC_PARAM_IARGS */
>>>>>> +#include "exec/cpu_ldst.h"
>>>>>> +#include "tcg/tcg-op.h"
>>>>>> +#include "qemu/compiler.h"
>>>>>> +#include <ffi.h>
>>>>>> +
>>>>>
>>>>>
>>>>> ffi.h is not found on macOS with Homebrew.
>>>>>
>>>>> This can be fixed by using pkg-config to find the right compiler (and 
>>>>> maybe
>>>>> also linker) flags:
>>>>>
>>>>> % pkg-config --cflags libffi
>>>>> -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/ffi
>>>>> % pkg-config --libs libffi
>>>>> -lffi
>>>>
>>>>
>>>> Which is exactly what I do in the previous patch:
>>>>
>>>>
>>>>> +++ b/meson.build
>>>>> @@ -1901,7 +1901,14 @@ specific_ss.add(when: 'CONFIG_TCG', if_true: files(
>>>>>     'tcg/tcg-op.c',
>>>>>     'tcg/tcg.c',
>>>>>   ))
>>>>> -specific_ss.add(when: 'CONFIG_TCG_INTERPRETER', if_true: 
>>>>> files('tcg/tci.c'))
>>>>> +
>>>>> +if get_option('tcg_interpreter')
>>>>> +  libffi = dependency('libffi', version: '>=3.0',
>>>>> +                      static: enable_static, method: 'pkg-config',
>>>>> +                      required: true)
>>>>> +  specific_ss.add(libffi)
>>>>> +  specific_ss.add(files('tcg/tci.c'))
>>>>> +endif
>>>>
>>>> Did you need a PKG_CONFIG_LIBDIR set for homebrew?
>>>
>>> Is this the "meson doesn't actually add the cflags everywhere it should"
>>> bug again ?
>>
>> I guess so.  I realized after sending this reply that PKG_CONFIG_LIBDIR can't
>> be the answer, since the original configure should have failed if pkg-config
>> didn't find ffi.
>>
>> Was there a resolution to said meson bug?
>
> Meanwhile I noticed an additional detail:
>
> There exist two different pkg-config configurations for libffi on Homebrew:
>
> % pkg-config --cflags libffi
> -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/ffi
> % export PKG_CONFIG_PATH="/opt/homebrew/opt/libffi/lib/pkgconfig"
> % pkg-config --cflags libffi
> -I/opt/homebrew/Cellar/libffi/3.3_2/include
>
> By default it points to a system directory which does not exist at all
> on my Mac, so that will never work.
>
> With the right PKG_CONFIG_PATH a correct include directory is set, and
> the latest rebased tci-next branch now works for me with a compiler warning:
>
> /opt/homebrew/Cellar/libffi/3.3_2/include/ffi.h:441:5: warning:
> 'FFI_GO_CLOSURES' is not defined, evaluates to 0 [-Wundef]

This got introduced in
https://github.com/libffi/libffi/commit/e951d64c0852; should we report there?

Cc'ing Jeremy who sent patches around FFI_GO_CLOSURES:
https://github.com/libffi/libffi/pull/586/commits/8c25da7d2cdf8

Meanwhile, about 5 years have passed, I'll post a patch...

Reply via email to