scripts/make.sh
.PHONY: clean distclean baseline bloatcheck install install_flat \
- uinstall uninstall_flat test tests help toybox_stuff change
+ uinstall uninstall_flat test tests help toybox_stuff change \
+ working pending
include kconfig/Makefile
+-include .singlemake
$(KCONFIG_CONFIG): $(KCONFIG_TOP)
$(KCONFIG_TOP): generated/Config.in
rm -rf toybox toybox_unstripped generated change .singleconfig*
distclean: clean
- rm -f toybox_old .config*
+ rm -f toybox_old .config* .singlemake
test: tests
help::
@echo ' toybox - Build toybox.'
+ @echo ' COMMANDNAME - Build individual toybox command as a standalone binary.'
+ @echo ' working - List working COMMANDNAMEs.'
+ @echo ' pending - List pending (unfinished) COMMANDNAMEs.'
@echo ' change - Build each command standalone under change/.'
@echo ' baseline - Create toybox_old for use by bloatcheck.'
@echo ' bloatcheck - Report size differences between old and current versions'
probeconfig > generated/Config.probed || rm generated/Config.probed
genconfig > generated/Config.in || rm generated/Config.in
+
+# Find names of commands that can be built standalone in these C files
+toys()
+{
+ grep 'TOY(.*)' "$@" | grep -v TOYFLAG_NOFORK | \
+ sed -rn 's/([^:]*):.*(OLD|NEW)TOY\( *([a-zA-Z][^,]*) *,.*/\1:\3/p'
+}
+
+WORKING=
+PENDING=
+toys toys/*/*.c | (
+while IFS=":" read FILE NAME
+do
+ [ "$NAME" == help ] && continue
+ [ "$NAME" == install ] && continue
+ echo -e "$NAME:\n\tscripts/single.sh $NAME\n"
+ [ "${FILE/pending//}" != "$FILE" ] &&
+ PENDING="$PENDING $NAME" ||
+ WORKING="$WORKING $NAME"
+done > .singlemake &&
+echo -e "clean::\n\trm -f $WORKING $PENDING" >> .singlemake &&
+echo -e "working:\n\t@echo $(echo $WORKING | tr ' ' '\n' | sort | xargs)" \
+ >> .singlemake &&
+echo -e "pending:\n\t@echo $(echo $PENDING | tr ' ' '\n' | sort | xargs)" \
+ >> .singlemake
+)
BUILD="$(echo ${CROSS_COMPILE}${CC} $CFLAGS -I . $OPTIMIZE $GITHASH)"
FILES="$(echo lib/*.c main.c $TOYFILES)"
-if [ "${FILES/pending//}" != "$FILES" ]
+if [ "${TOYFILES/pending//}" != "$TOYFILES" ]
then
echo -e "\n\033[1;31mwarning: using unfinished code from toys/pending\033[0m"
fi