Subject: Re: [PATCH 3/6] meson: do a full usage-based compile check for sysinfo

From: Patrick Steinhardt <[email-masked]>
Date: Tue, 22 Apr 2025 09:31:32 +0200

On Mon, Apr 21, 2025 at 01:51:47PM -0400, Eli Schwartz wrote:
> diff --git a/meson.build b/meson.build
> index f5d9ffcd7f..8037e536dd 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1058,10 +1058,6 @@ if compiler.has_header('alloca.h')
>    libgit_c_args += '-DHAVE_ALLOCA_H'
>  endif
>  
> -if compiler.has_header('sys/sysinfo.h')
> -  libgit_c_args += '-DHAVE_SYSINFO'
> -endif
> -
>  # Windows has libgen.h and a basename implementation, but we still need our own
>  # implementation to threat things like drive prefixes specially.
>  if host_machine.system() == 'windows' or not compiler.has_header('libgen.h')
> @@ -1272,6 +1268,10 @@ if host_machine.system() != 'windows'
>    endif
>  endif
>  
> +if compiler.has_member('struct sysinfo', 'totalram', prefix: '#include <sys/sysinfo.h>')
> +  libgit_c_args += '-DHAVE_SYSINFO'
> +endif

Makes sense. We do have c9a51775a36 (builtin/gc.c: correct RAM
calculation when using sysinfo, 2025-04-17) in flight which also causes
us to use `struct sysinfo::mem_unit`. But I think it's fine to check for
only one of the members here.

Patrick