From 1e1684742dc26e62bbc2afbaab124fca58d60c8e Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Fri, 13 Apr 2018 19:58:41 -0500 Subject: Add getconf. --- scripts/make.sh | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'scripts') diff --git a/scripts/make.sh b/scripts/make.sh index 993bcd33..1119ed9d 100755 --- a/scripts/make.sh +++ b/scripts/make.sh @@ -262,6 +262,42 @@ then generated/config2help Config.in $KCONFIG_CONFIG > generated/help.h || exit 1 fi +mksysconf() +{ + echo "int ${1}_vals[] = {" && + + # Extract names, remove blank lines, filter, replace unknown #defines + # with UNKNOWN + sed -n "/char [*]${1}_names[[]/"',/^}/s/[^"]*"\([^"]*\) *",*/\1\n/pg' \ + toys/posix/getconf.c | grep -v '^$' | $2 | + sed -e "$DEFINES" -e "t;d;a UNKNOWN" | xargs | tr ' ' ',' && + echo '};' +} + +if ! [ generated/getconf.h -nt toys/posix/getconf.c ] +then + echo generated/getconf.h + + # Dump #define list for limits.h and unistd.h, create sed expression to + # match known defines + DEFINES="$(echo -e '#include \n#include ' | \ + gcc -E -dM - | \ + sed -n 's@^#define[ \t][ \t]*\([^ \t(]*\)[ \t].*@s/^\1$/\&/@p' )" + + # Extract limit names, compare against limits.h #defines, replace unknown + # ones with UNKNOWN + + { + mksysconf sysconf \ + sed\ 's/^_POSIX2/2/;s/^PTHREAD/THREAD/;s/^_POSIX_//;s/^_XOPEN_/XOPEN_/;s/^/_SC_/' && + mksysconf confstr sed\ 's/.*/_CS_&/' && + mksysconf limit cat + } > generated/getconf.h + + unset HEADERS +fi + + [ ! -z "$NOBUILD" ] && exit 0 echo -n "Compile toybox" -- cgit v1.2.3