meson: do a full usage-based compile check for sysinfo
On Solaris, sys/sysinfo.h is a completely different file and doesn't resemble the linux file at all. There is also a sysinfo() function, but it takes a totally different call signature, which asks for: - the field you wish to receive - a `char *buf` to copy the data to and is very useful IFF you want to know, say, the hardware provider. Or, get *specific* fields from uname(2). https://docs.oracle.com/cd/E86824_01/html/E54765/sysinfo-2.html It is surely possible to do this manually via `sysconf(3)` without the nice API. I can't find anything more direct. Either way, I'm not very attached to Solaris, so someone who cares can add it. Either way, it's wrong to assume that sysinfo.h contains what we are looking for. Check that sysinfo.h defines the struct we actually utilize in builtins/gc.c, which will correctly fail on systems that don't have it. Signed-off-by: Eli Schwartz <eschwartz@gentoo.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>next
parent
945090de2d
commit
f5e3c6c57d
|
@ -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')
|
||||
|
@ -1267,6 +1263,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
|
||||
|
||||
if compiler.has_member('struct stat', 'st_mtimespec.tv_nsec', prefix: '#include <sys/stat.h>')
|
||||
libgit_c_args += '-DUSE_ST_TIMESPEC'
|
||||
elif not compiler.has_member('struct stat', 'st_mtim.tv_nsec', prefix: '#include <sys/stat.h>')
|
||||
|
|
Loading…
Reference in New Issue