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...
