Move virtio header copying logic to a function, use that to copy arch specific virtio headers.
Signed-off-by: Michael S. Tsirkin <m...@redhat.com> --- scripts/update-linux-headers.sh | 56 ++++++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 23 deletions(-) diff --git a/scripts/update-linux-headers.sh b/scripts/update-linux-headers.sh index 9654553..1be4d83 100755 --- a/scripts/update-linux-headers.sh +++ b/scripts/update-linux-headers.sh @@ -28,6 +28,36 @@ if [ -z "$output" ]; then output="$PWD" fi +cp_virtio() { + from=$1 + to=$2 + virtio=$(find "$from" -name '*virtio*h') + if [ "$virtio" ]; then + rm -rf "$to" + mkdir -p "$to" + for f in $virtio; do + if + grep '#include' "$f" | grep -v -e 'linux/virtio' \ + -e 'linux/types' \ + -e 'linux/if_ether' \ + > /dev/null + then + echo "Unexpected #include in input file $f". + exit 2 + fi + + header=$(expr "$f" : '.*/\(.*\)'); + sed -e 's/__u\([0-9][0-9]*\)/uint\1_t/g' \ + -e 's/__le\([0-9][0-9]*\)/uint\1_t/g' \ + -e 's/__be\([0-9][0-9]*\)/uint\1_t/g' \ + -e 's/<linux\/\([^>]*\)>/"standard-headers\/sys\/\1"/' \ + -e 's/__bitwise__//' \ + -e 's/__attribute__((packed))/QEMU_PACKED/' \ + "$f" > "$to/$header"; + done + fi +} + # This will pick up non-directories too (eg "Kconfig") but we will # ignore them in the next loop. ARCHLIST=$(cd "$linux/arch" && echo *) @@ -57,6 +87,8 @@ for arch in $ARCHLIST; do if [ $arch = powerpc ]; then cp "$tmpdir/include/asm/epapr_hcalls.h" "$output/linux-headers/asm-powerpc/" fi + + cp_virtio "$tmpdir/include/asm" "$output/include/standard-headers/asm-$arch" done rm -rf "$output/linux-headers/linux" @@ -83,29 +115,7 @@ cat <<EOF >$output/linux-headers/linux/virtio_ring.h #include "standard-headers/sys/virtio_ring.h" EOF -rm -rf "$output/include/standard-headers/sys" -mkdir -p "$output/include/standard-headers/sys" -for f in $tmpdir/include/linux/virtio*h; do - if - grep '#include' "$f" | grep -v -e 'linux/virtio' \ - -e 'linux/types' \ - -e 'linux/if_ether' \ - > /dev/null - then - echo "Unexpected #include in input file $f". - exit 2 - fi - - header=$(expr "$f" : '.*/\(.*\)'); - sed -e 's/__u\([0-9][0-9]*\)/uint\1_t/g' \ - -e 's/__le\([0-9][0-9]*\)/uint\1_t/g' \ - -e 's/__be\([0-9][0-9]*\)/uint\1_t/g' \ - -e 's/<linux\/\([^>]*\)>/"standard-headers\/sys\/\1"/' \ - -e 's/__bitwise__//' \ - -e 's/__attribute__((packed))/QEMU_PACKED/' \ - "$tmpdir/include/linux/$header" > \ - "$output/include/standard-headers/sys/$header"; -done +cp_virtio "$tmpdir/include/linux/" "$output/include/standard-headers/sys" cat <<EOF >$output/include/standard-headers/sys/types.h #include <inttypes.h> -- MST