[libvirt PATCH 027/351] meson: add symbols check

Pavel Hrdina phrdina at redhat.com
Thu Jul 16 09:54:23 UTC 2020


Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
---
 configure.ac | 87 ----------------------------------------------------
 meson.build  | 72 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 72 insertions(+), 87 deletions(-)

diff --git a/configure.ac b/configure.ac
index 4a40f3fc34e..1ffa4f931ee 100644
--- a/configure.ac
+++ b/configure.ac
@@ -207,9 +207,6 @@ LIBVIRT_CHECK_YAJL
 
 AC_CHECK_SIZEOF([long])
 
-dnl Check whether endian provides handy macros.
-AC_CHECK_DECLS([htole64], [], [], [[#include <endian.h>]])
-
 AC_CHECK_TYPE([struct ifreq],
   [AC_DEFINE([HAVE_STRUCT_IFREQ],[1],
     [Defined if struct ifreq exists in net/if.h])],
@@ -223,16 +220,6 @@ AC_CHECK_TYPE([struct sockpeercred],
   [], [[#include <sys/socket.h>
   ]])
 
-AC_CHECK_DECLS([ETH_FLAG_TXVLAN, ETH_FLAG_NTUPLE, ETH_FLAG_RXHASH, ETH_FLAG_LRO,
-                ETHTOOL_GGSO, ETHTOOL_GGRO, ETHTOOL_GFLAGS, ETHTOOL_GFEATURES,
-                ETHTOOL_SCOALESCE, ETHTOOL_GCOALESCE],
-  [], [], [[#include <linux/ethtool.h>
-  ]])
-
-AC_CHECK_DECLS([SEEK_HOLE], [], [],
-               [#include <sys/types.h>
-                #include <unistd.h>])
-
 
 AC_CHECK_LIB([intl],[gettext],[])
 AC_CHECK_LIB([util],[openpty],[])
@@ -407,27 +394,6 @@ if test $with_storage = yes; then
 fi
 AM_CONDITIONAL([WITH_STORAGE], [test "$with_storage" = "yes"])
 
-dnl
-dnl check for DEVLINK_CMD_ESWITCH_GET
-dnl
-dnl Assume DEVLINK_ESWITCH_MODE_SWITCHDEV is also
-dnl available, as it was introudced in kernel 4.8
-dnl along with the original spelling of this constant
-dnl (DEVLINK_CMD_ESWITCH_MODE_GET, not supported by libvirt)
-dnl
-if test "$with_linux" = "yes"; then
-    AC_CHECK_DECLS([DEVLINK_CMD_ESWITCH_GET], [], [],
-                   [[#include <linux/devlink.h>]])
-fi
-
-dnl
-dnl check for VHOST_VSOCK_SET_GUEST_CID
-dnl
-if test "$with_linux" = "yes"; then
-    AC_CHECK_DECLS([VHOST_VSOCK_SET_GUEST_CID], [], [],
-                   [[#include <linux/vhost.h>]])
-fi
-
 dnl Allow perl/python overrides
 AC_PATH_PROGS([PYTHON], [python3])
 if test -z "$PYTHON"; then
@@ -478,9 +444,6 @@ then
 fi
 AM_CONDITIONAL([WITH_NODE_DEVICES], [test "$with_nodedev" = "yes"])
 
-dnl GET_VLAN_VID_CMD is required for virNetDevGetVLanID
-AC_CHECK_DECLS([GET_VLAN_VID_CMD], [], [], [[#include <linux/if_vlan.h>]])
-
 # Check for Linux vs. BSD ifreq members
 AC_CHECK_MEMBERS([struct ifreq.ifr_newname,
                   struct ifreq.ifr_ifindex,
@@ -491,41 +454,6 @@ AC_CHECK_MEMBERS([struct ifreq.ifr_newname,
                   #include <net/if.h>
                  ])
 
-# Check for BSD approach for setting MAC addr
-AC_LINK_IFELSE([AC_LANG_PROGRAM(
-     [[
-        #include <sys/types.h>
-        #include <sys/socket.h>
-        #include <net/if_dl.h>
-     ]],
-     [[
-        link_addr(0, 0)]])],
-     [AC_DEFINE([HAVE_DECL_LINK_ADDR],
-                [1],
-                [whether link_addr is available])])
-
-# Check for BSD approach for bridge management
-AC_CHECK_DECLS([BRDGSFD, BRDGADD, BRDGDEL],
-               [AC_DEFINE([HAVE_BSD_BRIDGE_MGMT],
-                          [1],
-                          [whether BSD style bridge management is available])],
-               [],
-               [#include <stdint.h>
-                #include <net/if.h>
-                #include <net/ethernet.h>
-                #include <net/if_bridgevar.h>
-               ])
-
-# Check for BSD CPU affinity availability
-AC_CHECK_DECLS([cpuset_getaffinity],
-               [AC_DEFINE([HAVE_BSD_CPU_AFFINITY],
-                          [1],
-                          [whether BSD CPU affinity management is available])],
-               [],
-               [#include <sys/param.h>
-                #include <sys/cpuset.h>
-               ])
-
 # Check for BSD kvm (kernel memory interface)
 if test $with_freebsd = yes; then
      AC_CHECK_LIB([kvm], [kvm_getprocs], [],
@@ -533,21 +461,6 @@ if test $with_freebsd = yes; then
                  )
 fi
 
-AC_CHECK_DECLS([clock_serv_t, host_get_clock_service, clock_get_time],
-               [AC_DEFINE([HAVE_MACH_CLOCK_ROUTINES],
-                          [1],
-                          [whether Mach clock routines are available])],
-               [],
-               [#include <mach/clock.h>
-                #include <mach/mach.h>
-               ])
-
-# Check if we have new enough kernel to support BPF devices for cgroups v2
-if test "$with_linux" = "yes"; then
-    AC_CHECK_DECLS([BPF_PROG_QUERY, BPF_CGROUP_DEVICE],
-                   [], [], [#include <linux/bpf.h>])
-fi
-
 # Check if we need to look for ifconfig
 if test "$want_ifconfig" = "yes"; then
      AC_PATH_PROG([IFCONFIG_PATH], [ifconfig])
diff --git a/meson.build b/meson.build
index 62e51230888..c79d557b289 100644
--- a/meson.build
+++ b/meson.build
@@ -736,6 +736,78 @@ if host_machine.system() == 'linux'
 endif
 
 
+# check various symbols
+
+symbols = [
+  # Check whether endian provides handy macros.
+  [ 'endian.h', 'htole64' ],
+
+  [ 'linux/ethtool.h', 'ETH_FLAG_TXVLAN' ],
+  [ 'linux/ethtool.h', 'ETH_FLAG_NTUPLE' ],
+  [ 'linux/ethtool.h', 'ETH_FLAG_RXHASH' ],
+  [ 'linux/ethtool.h', 'ETH_FLAG_LRO' ],
+  [ 'linux/ethtool.h', 'ETHTOOL_GGSO' ],
+  [ 'linux/ethtool.h', 'ETHTOOL_GGRO' ],
+  [ 'linux/ethtool.h', 'ETHTOOL_GFLAGS' ],
+  [ 'linux/ethtool.h', 'ETHTOOL_GFEATURES' ],
+  [ 'linux/ethtool.h', 'ETHTOOL_SCOALESCE' ],
+  [ 'linux/ethtool.h', 'ETHTOOL_GCOALESCE' ],
+
+  # GET_VLAN_VID_CMD is required for virNetDevGetVLanID
+  [ 'linux/if_vlan.h', 'GET_VLAN_VID_CMD' ],
+
+  [ 'unistd.h', 'SEEK_HOLE' ],
+
+  # GET_VLAN_VID_CMD is required for virNetDevGetVLanID
+  [ 'linux/if_vlan.h', 'GET_VLAN_VID_CMD' ],
+
+  # Check for BSD approach for setting MAC addr
+  [ 'net/if_dl.h', 'link_addr' ],
+]
+
+if host_machine.system() == 'linux'
+  symbols += [
+    # check for DEVLINK_CMD_ESWITCH_GET
+    # Assume DEVLINK_ESWITCH_MODE_SWITCHDEV is also available, as it was
+    # introudced in kernel 4.8 along with the original spelling of this
+    # constant (DEVLINK_CMD_ESWITCH_MODE_GET, not supported by libvirt).
+    [ 'linux/devlink.h', 'DEVLINK_CMD_ESWITCH_GET' ],
+
+    # check for VHOST_VSOCK_SET_GUEST_CID
+    [ 'linux/vhost.h', 'VHOST_VSOCK_SET_GUEST_CID' ],
+
+    # Check if we have new enough kernel to support BPF devices for cgroups v2
+    [ 'linux/bpf.h', 'BPF_PROG_QUERY' ],
+    [ 'linux/bpf.h', 'BPF_CGROUP_DEVICE' ],
+  ]
+endif
+
+foreach symbol : symbols
+  if cc.has_header_symbol(symbol[0], symbol[1])
+    conf.set('HAVE_DECL_ at 0@'.format(symbol[1].to_upper()), 1)
+  endif
+endforeach
+
+# Check for BSD approach for bridge management
+if (cc.has_header_symbol('net/if_bridgevar.h', 'BRDGSFD') and
+    cc.has_header_symbol('net/if_bridgevar.h', 'BRDGADD') and
+    cc.has_header_symbol('net/if_bridgevar.h', 'BRDGDEL'))
+  conf.set('HAVE_BSD_BRIDGE_MGMT', 1)
+endif
+
+# Check for BSD CPU affinity availability
+if cc.has_header_symbol('sys/cpuset.h', 'cpuset_getaffinity')
+  conf.set('HAVE_BSD_CPU_AFFINITY', 1)
+endif
+
+# whether Mach clock routines are available
+if (cc.has_header_symbol('mach/clock.h', 'clock_serv_t') and
+    cc.has_header_symbol('mach/clock.h', 'host_get_clock_service') and
+    cc.has_header_symbol('mach/clock.h', 'clock_get_time'))
+  conf.set('HAVE_MACH_CLOCK_ROUTINES', 1)
+endif
+
+
 # define top include directory
 
 top_inc_dir = include_directories('.')
-- 
2.26.2




More information about the libvir-list mailing list