From 712e43ef7c92e8903e6f9d7ca261a420c566d299 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Sun, 7 Feb 2016 18:15:53 -0600 Subject: Add "make ls" and friends targets, with "make working" and "make pending" lists. --- Makefile | 9 +++++++-- scripts/genconfig.sh | 26 ++++++++++++++++++++++++++ scripts/make.sh | 2 +- 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 004293c0..92176a2b 100644 --- a/Makefile +++ b/Makefile @@ -19,9 +19,11 @@ toybox toybox_unstripped: toybox_stuff 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 @@ -54,7 +56,7 @@ clean:: rm -rf toybox toybox_unstripped generated change .singleconfig* distclean: clean - rm -f toybox_old .config* + rm -f toybox_old .config* .singlemake test: tests @@ -63,6 +65,9 @@ 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' diff --git a/scripts/genconfig.sh b/scripts/genconfig.sh index ce8c0266..7b34f085 100755 --- a/scripts/genconfig.sh +++ b/scripts/genconfig.sh @@ -119,3 +119,29 @@ genconfig() 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 +) diff --git a/scripts/make.sh b/scripts/make.sh index 9fbf086a..84dda343 100755 --- a/scripts/make.sh +++ b/scripts/make.sh @@ -66,7 +66,7 @@ CFLAGS="$CFLAGS $(cat generated/cflags)" 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 -- cgit v1.2.3