@Bruce, see below. On 7/1/21 3:34 PM, David Marchand wrote: > On Thu, Jul 1, 2021 at 11:22 AM Andrew Rybchenko > <andrew.rybche...@oktetlabs.ru> wrote: >> The build works fine for me on FC34, but it has >> libatomic-11.1.1-3.fc34.x86_64 installed. > > I first produced the issue on my "old" FC32. > Afaics, for FC33 and later, gcc now depends on libatomic and the > problem won't be noticed. > FC32 and before are EOL, but I then reproduced the issue on RHEL 8 > (and Intel CI reported it on Centos 8 too).
I see. Thanks for the clarification. >> >> I'd like to understand what we're trying to solve here. >> Are we trying to make meson to report the missing library >> correctly? >> >> If so, I think I can do simple check using cc.links() >> which will fail if the library is not found. I'll >> test that it works as expected if the library is not >> completely installed. >> > > I tried below diff, and it works for me. > "works" as in net/sfc gets disabled without libatomic installed: > > diff --git a/drivers/net/sfc/meson.build b/drivers/net/sfc/meson.build > index 32b58e3d76..8d62aad774 100644 > --- a/drivers/net/sfc/meson.build > +++ b/drivers/net/sfc/meson.build > @@ -15,6 +15,7 @@ endif > if (arch_subdir != 'x86' or not dpdk_conf.get('RTE_ARCH_64')) and > (arch_subdir != 'arm' or not > host_machine.cpu_family().startswith('aarch64')) > build = false > reason = 'only supported on x86_64 and aarch64' > + subdir_done() @Bruce Shouldn't we add subdir_done() after all build = false cases? As I understand it is OK for minimum supported meson version. > endif > > extra_flags = [] > @@ -46,6 +47,14 @@ endif > > # for gcc compiles we need -latomic for 128-bit atomic ops > if cc.get_id() == 'gcc' > + code = '''#include <stdio.h> > + void main() { printf("Atomilink me.\n"); } > + ''' > + if not cc.links(code, args: '-latomic', name: 'libatomic link check') > + build = false > + reason = 'missing dependency, "libatomic"' > + subdir_done() > + endif > ext_deps += cc.find_library('atomic') > endif Many thanks, LGTM. I'll pick it up and add comments why it is checked this way.