kbuild: simplify scripts/headers_install.sh

Now that headers_install.sh is invoked per file, remove the for-loop
in the shell script.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
This commit is contained in:
Masahiro Yamada 2019-06-04 19:14:05 +09:00
parent a5bae54c10
commit 555187a879
2 changed files with 21 additions and 29 deletions

View File

@ -58,7 +58,7 @@ $(if $(new-dirs), $(shell mkdir -p $(new-dirs)))
ifndef HDRCHECK ifndef HDRCHECK
quiet_cmd_install = HDRINST $@ quiet_cmd_install = HDRINST $@
cmd_install = $(CONFIG_SHELL) $(srctree)/scripts/headers_install.sh $(@D) $(<D) $(@F) cmd_install = $(CONFIG_SHELL) $(srctree)/scripts/headers_install.sh $< $@
$(src-headers): $(dst)/%.h: $(src)/%.h $(srctree)/scripts/headers_install.sh FORCE $(src-headers): $(dst)/%.h: $(src)/%.h $(srctree)/scripts/headers_install.sh FORCE
$(call if_changed,install) $(call if_changed,install)

View File

@ -1,47 +1,39 @@
#!/bin/sh #!/bin/sh
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
if [ $# -lt 2 ] if [ $# -ne 2 ]
then then
echo "Usage: headers_install.sh OUTDIR SRCDIR [FILES...]" echo "Usage: headers_install.sh INFILE OUTFILE"
echo echo
echo "Prepares kernel header files for use by user space, by removing" echo "Prepares kernel header files for use by user space, by removing"
echo "all compiler.h definitions and #includes, removing any" echo "all compiler.h definitions and #includes, removing any"
echo "#ifdef __KERNEL__ sections, and putting __underscores__ around" echo "#ifdef __KERNEL__ sections, and putting __underscores__ around"
echo "asm/inline/volatile keywords." echo "asm/inline/volatile keywords."
echo echo
echo "OUTDIR: directory to write each userspace header FILE to." echo "INFILE: header file to operate on"
echo "SRCDIR: source directory where files are picked." echo "OUTFILE: output file which the processed header is writen to"
echo "FILES: list of header files to operate on."
exit 1 exit 1
fi fi
# Grab arguments # Grab arguments
INFILE=$1
OUTFILE=$2
TMPFILE=$OUTFILE.tmp
OUTDIR="$1" trap 'rm -f $OUTFILE $TMPFILE' EXIT
shift
SRCDIR="$1"
shift
# Iterate through files listed on command line sed -E -e '
s/([[:space:](])(__user|__force|__iomem)[[:space:]]/\1/g
s/__attribute_const__([[:space:]]|$)/\1/g
s@^#include <linux/compiler(|_types).h>@@
s/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g
s/(^|[[:space:](])(inline|asm|volatile)([[:space:](]|$)/\1__\2__\3/g
s@#(ifndef|define|endif[[:space:]]*/[*])[[:space:]]*_UAPI@#\1 @
' $INFILE > $TMPFILE || exit 1
FILE= scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__ $TMPFILE > $OUTFILE
trap 'rm -f "$OUTDIR/$FILE" "$OUTDIR/$FILE.sed"' EXIT [ $? -gt 1 ] && exit 1
for i in "$@"
do rm -f $TMPFILE
FILE="$(basename "$i")"
sed -E \
-e 's/([[:space:](])(__user|__force|__iomem)[[:space:]]/\1/g' \
-e 's/__attribute_const__([[:space:]]|$)/\1/g' \
-e 's@^#include <linux/compiler(|_types).h>@@' \
-e 's/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g' \
-e 's/(^|[[:space:](])(inline|asm|volatile)([[:space:](]|$)/\1__\2__\3/g' \
-e 's@#(ifndef|define|endif[[:space:]]*/[*])[[:space:]]*_UAPI@#\1 @' \
"$SRCDIR/$i" > "$OUTDIR/$FILE.sed" || exit 1
scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__ "$OUTDIR/$FILE.sed" \
> "$OUTDIR/$FILE"
[ $? -gt 1 ] && exit 1
rm -f "$OUTDIR/$FILE.sed"
done
trap - EXIT trap - EXIT