meson: Consolidate function checks
authorMatthias Clasen <mclasen@redhat.com>
Sat, 18 Feb 2023 14:37:36 +0000 (09:37 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 18 Feb 2023 14:37:36 +0000 (09:37 -0500)
Put all the function checks in one place.
Remove functions we don't actually use,
and add ones that we have #ifdefs for in
in the code. Also add enough includes to
make these checks actually work.

Fixes: #5070
meson.build

index 4fff2394bd83729c94aad406c0d436691fd44339..81c5a459eb8d317f7bbfe66bb01843427b2486ca 100644 (file)
@@ -187,23 +187,28 @@ endforeach
 libm = cc.find_library('m', required: false)
 
 check_functions = [
-  'dcgettext',
   'getpagesize',
   'getresuid',
-  'lstat',
+  'madvise',
   'memfd_create',
+  'mkostemp',
+  'mlock',
   'mmap',
   'posix_fallocate',
-  '_lock_file',
-  'flockfile',
-  'mkstemp',
-  'mallinfo2',
   'sincos',
   'sincosf',
 ]
 
 foreach func : check_functions
-  if cc.has_function(func, dependencies: libm)
+  if cc.has_function(func,
+                     args: '-D_GNU_SOURCE',
+                     prefix:
+                       '#include <stdlib.h>\n' +
+                       '#include <unistd.h>\n' +
+                       '#include <sys/mman.h>\n' +
+                       '#include <fcntl.h>\n' +
+                       '#include <math.h>',
+                     dependencies: libm)
     cdata.set('HAVE_' + func.underscorify().to_upper(), 1)
   endif
 endforeach
@@ -230,14 +235,6 @@ if cc.compiles(uint128_t_src, name : '__uint128_t available')
   cdata.set('HAVE_UINT128_T', 1)
 endif
 
-# Check for mlock and madvise
-if cc.has_function('mlock', prefix: '#include <sys/mman.h>')
-  cdata.set('HAVE_MLOCK', 1)
-endif
-if cc.has_function('madvise', prefix: '#include <sys/mman.h>')
-  cdata.set('HAVE_MADVISE', 1)
-endif
-
 # Disable deprecation checks for all libraries we depend on on stable branches.
 # This is so newer versions of those libraries don't cause more warnings with
 # a stable GTK version.