From 442560c87532abcb494d2c461f2977aade74d35f Mon Sep 17 00:00:00 2001 From: "Dmitry V. Levin" Date: Mon, 2 Apr 2018 15:56:31 +0000 Subject: [PATCH] build: generate all union bpf_attr checks automatically Rather than list by hand some members of union bpf_attr that we check for availability, automatically list all members of union bpf_attr we are aware of. * m4/gen_bpf_attr_m4.sh: New file. * bootstrap: Invoke it. * configure.ac (AC_CHECK_HEADERS([linux/bpf.h])): Use st_BPF_ATTR. * m4/.gitignore: New file. --- bootstrap | 1 + configure.ac | 13 +------- m4/.gitignore | 1 + m4/gen_bpf_attr_m4.sh | 73 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 76 insertions(+), 12 deletions(-) create mode 100644 m4/.gitignore create mode 100755 m4/gen_bpf_attr_m4.sh diff --git a/bootstrap b/bootstrap index 71237ab2..448543af 100755 --- a/bootstrap +++ b/bootstrap @@ -1,5 +1,6 @@ #!/bin/sh -eu +./m4/gen_bpf_attr_m4.sh ./generate_mpers_am.sh ./xlat/gen.sh ./tests/gen_pure_executables.sh diff --git a/configure.ac b/configure.ac index 89f3f559..3f356969 100644 --- a/configure.ac +++ b/configure.ac @@ -464,18 +464,7 @@ AC_CHECK_HEADERS([linux/input.h], [ AC_CHECK_MEMBERS([struct input_absinfo.resolution],,, [#include ]) ]) -AC_CHECK_HEADERS([linux/bpf.h], [ - AC_CHECK_MEMBERS(m4_normalize([ - union bpf_attr.attach_flags, - union bpf_attr.bpf_fd, - union bpf_attr.flags, - union bpf_attr.info.info, - union bpf_attr.next_id, - union bpf_attr.numa_node, - union bpf_attr.prog_flags, - union bpf_attr.test.duration - ]),,, [#include ]) -]) +AC_CHECK_HEADERS([linux/bpf.h], [st_BPF_ATTR]) AC_CHECK_TYPES(m4_normalize([ struct br_mdb_entry, diff --git a/m4/.gitignore b/m4/.gitignore new file mode 100644 index 00000000..654b3dfe --- /dev/null +++ b/m4/.gitignore @@ -0,0 +1 @@ +bpf_attr.m4 diff --git a/m4/gen_bpf_attr_m4.sh b/m4/gen_bpf_attr_m4.sh new file mode 100755 index 00000000..f3dc3072 --- /dev/null +++ b/m4/gen_bpf_attr_m4.sh @@ -0,0 +1,73 @@ +#!/bin/sh -efu +# Copyright (c) 2018 Dmitry V. Levin +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. The name of the author may not be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +input=bpf_attr.h +output="${0%/*}"/bpf_attr.m4 +exec > "$output" + +cat <]) +]) +EOF -- 2.50.0