summaryrefslogtreecommitdiff
path: root/extra/scripts/gen_bits_syscall_h.sh
diff options
context:
space:
mode:
Diffstat (limited to 'extra/scripts/gen_bits_syscall_h.sh')
-rwxr-xr-xextra/scripts/gen_bits_syscall_h.sh56
1 files changed, 35 insertions, 21 deletions
diff --git a/extra/scripts/gen_bits_syscall_h.sh b/extra/scripts/gen_bits_syscall_h.sh
index c0b4c25f5..bfd06b832 100755
--- a/extra/scripts/gen_bits_syscall_h.sh
+++ b/extra/scripts/gen_bits_syscall_h.sh
@@ -8,39 +8,53 @@
# June 27, 2001 Manuel Novoa III
#
-# This script expects top_builddir and CC (as used in the Makefiles) to be set
-# in the environment, and outputs the appropriate
-# $top_builddir/include/bits/sysnum.h # corresponding to
-# $top_builddir/include/asm/unistd.h to stdout.
+# This script expects CC (as used in the Makefiles) to be set
+# in the environment, and outputs the appropriate bits/sysnum.h #
+# corresponding to asm/unistd.h to stdout.
#
# Warning!!! This does _no_ error checking!!!
-INCLUDE_OPTS="-nostdinc -I${KERNEL_HEADERS}"
+if [ "${KERNEL_HEADERS:-/}" != "/" ] ; then
+ INCLUDE_OPTS="-nostdinc -I${KERNEL_HEADERS}"
+else
+ # Let the toolchain use its configure paths.
+ INCLUDE_OPTS=
+fi
case $CC in
*icc*) CC_SYSNUM_ARGS="-dM" ;;
+*clang*) CC_SYSNUM_ARGS="-dM" ;;
*) CC_SYSNUM_ARGS="-dN" ;;
esac
( echo "#include <asm/unistd.h>";
echo "#include <asm/unistd.h>" |
$CC -E $CC_SYSNUM_ARGS $INCLUDE_OPTS - |
- sed -ne 's/^[ ]*#define[ ]*__NR_\([A-Za-z0-9_]*\).*/UCLIBC_\1 __NR_\1/gp' \
- -e 's/^[ ]*#undef[ ]*__NR_\([A-Za-z0-9_]*\).*/UNDEFUCLIBC_\1 __NR_\1/gp' # needed to strip out any kernel-internal defines
+ sed -n -r \
+ -e 's/^[ ]*#define[ ]*(__ARM_NR_|__NR_)([A-Za-z0-9_]*).*/UCLIBC\1\2 \1\2/gp' \
+ -e 's/^[ ]*#undef[ ]*(__ARM_NR_|__NR_)([A-Za-z0-9_]*).*/UNDEFUCLIBC\1\2 \1\2/gp' # needed to strip out any kernel-internal defines
) |
$CC -E $INCLUDE_OPTS - |
-( echo "/* WARNING!!! AUTO-GENERATED FILE!!! DO NOT EDIT!!! */" ;
- echo ;
- echo "#ifndef _BITS_SYSNUM_H" ;
- echo "#define _BITS_SYSNUM_H" ;
- echo ;
- echo "#ifndef _SYSCALL_H" ;
- echo "# error \"Never use <bits/sysnum.h> directly; include <sys/syscall.h> instead.\"" ;
- echo "#endif" ; echo ;
- sed -ne 's/^UCLIBC_\([A-Za-z0-9_]*\) *\(.*\)/#undef __NR_\1\
-#define __NR_\1 \2\
-#define SYS_\1 __NR_\1/gp' \
- -e 's/^UNDEFUCLIBC_\([A-Za-z0-9_]*\).*/#undef __NR_\1/gp'
- echo ;
- echo "#endif" ;
+(
+ cat <<-EOF
+/* WARNING!!! AUTO-GENERATED FILE!!! DO NOT EDIT!!! */
+/* See $0 for more information. */
+
+#ifndef _BITS_SYSNUM_H
+#define _BITS_SYSNUM_H
+
+#ifndef _SYSCALL_H
+# error "Never use <bits/sysnum.h> directly; include <sys/syscall.h> instead."
+#endif
+
+EOF
+ sed -n -r -e 's/^UCLIBC(__ARM_NR_|__NR_)([A-Za-z0-9_]*) *(.*)/#undef \1\2\
+#define \1\2 \3\
+#define SYS_\2 \1\2/gp' \
+ -e 's/^UNDEFUCLIBC(__ARM_NR_|__NR_)([A-Za-z0-9_]*).*/#undef \1\2\
+#undef SYS_\2/gp'
+ cat <<-EOF
+
+#endif
+EOF
)