Make mkioctls script work on Linux and MacOS

Using find -s  will not work with the Linux or MacOS find command. We pipe
to sort instead since the only real requirement here is that the order
stays the same. While I am touching this file I also fixed a `==` construct
which is not supported by POSIX sh but appears to work on FreeBSD.

Reviewed By:	imp
Approved By:	jhb (mentor)
Differential Revision: https://reviews.freebsd.org/D14246
This commit is contained in:
Alex Richardson 2018-08-20 10:39:37 +00:00
parent 7b87f99aa8
commit ec45ce6222

View File

@ -17,19 +17,30 @@ LC_ALL=C; export LC_ALL
# XXX should we use an ANSI cpp?
ioctl_includes=$(
cd $includedir
filter='tee'
if [ "${MK_PF}" == "no" ]; then
filter='egrep -v (net/pfvar|net/if_pfsync)\.h'
set -e
# if /bin/sh is bash this will avoid further errors due to missing commands
if set -o | grep -q pipefail; then
set -o pipefail
fi
find -H -s * -name '*.h' | \
filter='tee'
if [ "${MK_PF}" = "no" ]; then
filter='egrep -v (net/pfvar|net/if_pfsync)\.h'
fi
# find -s would avoid the need to invoke sort but it is non-portable
find -L ./* -type f -name '*.h' | \
LC_ALL=C sort | \
$filter | \
xargs egrep -l \
'^#[ ]*define[ ]+[A-Za-z_][A-Za-z0-9_]*[ ]+_IO[^a-z0-9_]' |
awk '{printf("#include <%s>\\n", $1)}'
)
if [ -z "$ioctl_includes" ]; then
echo "Failed to build list of ioctl headers"
exit 1
fi
awk -v x="$ioctl_includes" 'BEGIN {print x}' |
$CPP -nostdinc -I$includedir -dM -DCOMPAT_43TTY - |
awk -v ioctl_includes="$ioctl_includes" '