Fix up some silly macros and use xmalloc and friends exclusively.
[oweals/busybox.git] / busybox.mkll
index be6d937cfb8b06ea3739ff354c663ae7b472b7f5..81b329ad89f34be15a59059aeee59d9575a06e9b 100755 (executable)
@@ -1,15 +1,21 @@
 #!/bin/sh
-#Make busybox links list file
+# Make busybox links list file.
 
-DF="busybox.def.h"
-MF="busybox.c"
+# input $1: full path to Config.h
+# input $2: full path to applets.h
+# output (stdout): list of pathnames that should be linked to busybox
 
-LIST="$(sed -n '/^#define/{s/^#define //p;}' $DF)"
+# Maintainer: Larry Doolittle <ldoolitt@recycle.lbl.gov>
 
-for def in ${LIST}; do
-       i=`sed -n 's/^#ifdef \<'$def'\>.*\/\/\(.*$\)/\/\1\//gp' $MF`
-       j=`sed -n '/^#ifdef \<'$def'\>.*/,/^#endif/{ s/.*\"\(.*\)\".*/\1/gp; }' $MF`
-       for k in $j; do
-           echo $i$k
-       done
-done
+CONFIG_H=${1:-Config.h}
+APPLETS_H=${2:-applets.h}
+gcc -E -DMAKE_LINKS -include $CONFIG_H $APPLETS_H |
+  awk '/^[ \t]*LINK/{
+       dir=substr($2,8)
+       gsub("_","/",dir)
+       if(dir=="/ROOT") dir=""
+       file=$3
+       gsub("\"","",file)
+       if (file=="busybox") next
+       print tolower(dir) "/" file
+  }'