From 1e1684742dc26e62bbc2afbaab124fca58d60c8e Mon Sep 17 00:00:00 2001
From: Rob Landley <rob@landley.net>
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 <limits.h>\n#include <unistd.h>' | \
+    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