From 2896480c4918f2accccb8301bec457a7bff7377e Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Sat, 19 Jan 2008 17:08:39 -0600 Subject: Zap toys/Config.in and instead create generated/Config.in from contents of toys/*.c. Move relevant info into comment at the top of each toys/*.c. Also convert more of Makefile into a thin wrapper around shell scripts that actually do the work. (Makefile is only still there for the user interface.) --- Makefile | 62 ++++++++++++++++---------------------------------------------- 1 file changed, 16 insertions(+), 46 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index 7e91ded4..b8936001 100644 --- a/Makefile +++ b/Makefile @@ -1,39 +1,21 @@ # Makefile for toybox. # Copyright 2006 Rob Landley -CFLAGS := $(CFLAGS) -Wall -Wundef -Wno-char-subscripts -CCFLAGS = $(CFLAGS) -funsigned-char -OPTIMIZE = -Os -ffunction-sections -fdata-sections -Wl,--gc-sections -CC = $(CROSS_COMPILE)gcc -STRIP = $(CROSS_COMPILE)strip -HOSTCC = gcc - -# A synonym. -CROSS_COMPILE = $(CROSS) - all: toybox -.PHONY: clean distclean baseline bloatcheck install_flat test tests help +toybox toybox_unstripped: + scripts/make.sh -include kconfig/Makefile +.PHONY: clean distclean baseline bloatcheck install_flat test tests help \ + toybox toybox_unstripped -# 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 +include kconfig/Makefile -.config: Config.in toys/Config.in +$(KCONFIG_TOP): generated/Config.in +generated/Config.in: + scripts/genconfig.sh -# The long and roundabout sed is to make old versions of sed happy. New ones -# have '\n' so can replace one line with two without all the branches and -# mucking about with hold space. -generated/gen_config.h: .config - sed -n -e 's/^# CONFIG_\(.*\) is not set.*/\1/' \ - -e 't notset' -e 'b tryisset' -e ':notset' \ - -e 'h' -e 's/.*/#define CFG_& 0/p' \ - -e 'g' -e 's/.*/#define USE_&(...)/p' -e 'd' -e ':tryisset' \ - -e 's/^CONFIG_\(.*\)=y.*/\1/' -e 't isset' -e 'd' -e ':isset' \ - -e 'h' -e 's/.*/#define CFG_& 1/p' \ - -e 'g' -e 's/.*/#define USE_&(...) __VA_ARGS__/p' $< > $@ +HOSTCC:=cc # Development targets baseline: toybox_unstripped @@ -42,24 +24,6 @@ baseline: toybox_unstripped bloatcheck: toybox_old toybox_unstripped @scripts/bloat-o-meter toybox_old toybox_unstripped -# 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@') - -# The following still depends on generated/help.h even when it's not there, so -# *.h isn't sufficient by itself. - -toybox_unstripped: generated/gen_config.h generated/help.h $(toyfiles) toys/toylist.h toys/*.h lib/*.h toys.h - $(CC) $(CCFLAGS) -I . $(toyfiles) -o toybox_unstripped $(OPTIMIZE) - -toybox: toybox_unstripped - $(STRIP) toybox_unstripped -o toybox - -toys/help.c: generated/help.h - -generated/help.h: Config.in toys/Config.in scripts/config2help.py - scripts/config2help.py Config.in > generated/help.h - instlist: toybox $(HOSTCC) $(CCFLAGS) -I . scripts/install.c -o instlist @@ -69,7 +33,8 @@ install_flat: instlist @for i in `./instlist`; do ln -s toybox "$(PREFIX)/$$i"; done clean:: - rm -f toybox toybox_unstripped generated/gen_config.h instlist + rm -f toybox toybox_unstripped generated/config.h generated/Config.in \ + instlist distclean: clean rm -f toybox_old .config* generated/help.h @@ -80,5 +45,10 @@ tests: scripts/testall.sh help:: + @echo ' toybox - Build toybox.' @echo ' baseline - Create busybox_old for use by bloatcheck.' @echo ' bloatcheck - Report size differences between old and current versions' + @echo ' test - Run test suite against compiled commands.' + @echo ' clean - Delete temporary files.' + @echo ' distclean - Delete everything that isn't shipped.' + @echo ' install_flat - Install toybox into $PREFIX directory.' -- cgit v1.2.3