From e35f2b831201cbe220e97d1b36f8fec3981a9065 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Mon, 18 Jun 2007 01:09:00 -0400 Subject: Fix makefile to defconfig properly, and leak in a bit of the new test infrastructure so I don't have to revert it to check this in. :) --- Makefile | 18 ++++++++++-------- kconfig/Makefile | 6 +++--- scripts/cfg2files.sh | 11 +++++++++++ 3 files changed, 24 insertions(+), 11 deletions(-) create mode 100755 scripts/cfg2files.sh diff --git a/Makefile b/Makefile index 9c724aa0..bc8e091e 100644 --- a/Makefile +++ b/Makefile @@ -17,8 +17,8 @@ all: toybox include kconfig/Makefile # defconfig is the "maximum sane config"; allyesconfig minus debugging and such. -defconfig: allyesconfig - @sed -i -r -e "s/^(CONFIG_TOYBOX_(DEBUG|FREE))=.*/# \1 is not set/" .config +#defconfig: allyesconfig +# @sed -i -r -e "s/^(CONFIG_TOYBOX_(DEBUG|FREE))=.*/# \1 is not set/" .config .config: Config.in toys/Config.in @@ -41,13 +41,10 @@ baseline: toybox_unstripped bloatcheck: toybox_old toybox_unstripped @scripts/bloat-o-meter toybox_old toybox_unstripped -# Get list of toys/*.c files from .config +# Get list of .c files to compile, including toys/*.c files from .config +toyfiles = main.c lib/*.c \ + $(shell scripts/cfg2files.sh < .config | sed 's@\(.*\)@toys/\1.c@') -toysfiles = $(shell sed -nre 's/^CONFIG_(.*)=y/\1/;t skip;b;:skip;s/_.*//;p' .config | sort -u | tr A-Z a-z | grep -v '^toybox$$' | sed 's@\(.*\)@toys/\1.c@') - -# Compile toybox from source - -toyfiles = main.c lib/*.c $(toysfiles) toybox_unstripped: gen_config.h $(toyfiles) toys/toylist.h lib/*.h toys.h $(CC) $(CCFLAGS) -I . $(toyfiles) -o toybox_unstripped \ -ffunction-sections -fdata-sections -Wl,--gc-sections @@ -69,6 +66,11 @@ clean:: distclean: clean rm -f .config* +test: tests + +tests: + scripts/testall.sh + help:: @echo ' baseline - Create busybox_old for use by bloatcheck.' @echo ' bloatcheck - Report size differences between old and current versions' diff --git a/kconfig/Makefile b/kconfig/Makefile index 84ca1e70..7fc3faca 100644 --- a/kconfig/Makefile +++ b/kconfig/Makefile @@ -6,7 +6,7 @@ KCONFIG_TOP = Config.in KCONFIG_PROJECT = ToyBox obj = ./kconfig PHONY += clean help oldconfig menuconfig config silentoldconfig \ - randconfig allyesconfig allnoconfig allmodconfig #defconfig + randconfig allyesconfig allnoconfig allmodconfig defconfig menuconfig: $(obj)/mconf $< $(KCONFIG_TOP) @@ -29,8 +29,8 @@ allyesconfig: $(obj)/conf allnoconfig: $(obj)/conf $< -n $(KCONFIG_TOP) -#defconfig: $(obj)/conf -# $< -d $(KCONFIG_TOP) +defconfig: $(obj)/conf + $< -D /dev/null $(KCONFIG_TOP) # Help text used by make help help:: diff --git a/scripts/cfg2files.sh b/scripts/cfg2files.sh new file mode 100755 index 00000000..4f24c906 --- /dev/null +++ b/scripts/cfg2files.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# cat .config into this to get a list of .c files. + +# Grab the XXX part of all CONFIG_XXX entries, removing everything after the +# second underline. Sort the list, keep only one of each entry, convert +# to lower case, remove toybox itself from the list (as that indicates +# global symbols). + +sed -nre 's/^CONFIG_(.*)=y/\1/;t skip;b;:skip;s/_.*//;p' \ + | sort -u | tr A-Z a-z | grep -v '^toybox$' -- cgit v1.2.3