view Makefile @ 1650:a740a876c76c draft

Cleanup pass on printf. Alas, passing a union as the last argument to printf does not appear to work reliably, and there's no obvious way to manually assemble varargs in a portable manner. So I have to repeat the printf once for each data type. Oh well.
author Rob Landley <>
date Sun, 11 Jan 2015 01:22:36 -0600
parents 26287486fddc
children ce1d240b8ec8
line wrap: on
line source

# Makefile for toybox.
# Copyright 2006 Rob Landley <>

all: toybox


toybox_stuff: $(KCONFIG_CONFIG) *.[ch] lib/*.[ch] toys/*.h toys/*/*.c scripts/*.sh

toybox toybox_unstripped: toybox_stuff

.PHONY: clean distclean baseline bloatcheck install install_flat \
	uinstall uninstall_flat test tests help toybox_stuff

include kconfig/Makefile

$(KCONFIG_TOP): generated/
generated/ toys/*/*.c scripts/


# Development targets
baseline: toybox_unstripped
	@cp toybox_unstripped toybox_old

bloatcheck: toybox_old toybox_unstripped
	@scripts/bloatcheck toybox_old toybox_unstripped

generated/instlist: toybox_stuff
	NOBUILD=1 scripts/
	$(HOSTCC) -I . scripts/install.c -o generated/instlist

install_flat: generated/instlist
	scripts/ --symlink --force

	scripts/ --long --symlink --force

uninstall_flat: generated/instlist
	scripts/ --uninstall

	scripts/ --long --uninstall

change: generated/instlist
	export PREFIX=$${PREFIX:-change/} && \
	mkdir -p "$$PREFIX" && \
	for i in $$(generated/instlist); \
		do echo make $$i && \
		scripts/ $$i || touch $$PREFIX/$${i}.bad; \

	rm -rf toybox toybox_unstripped generated change .singleconfig*

distclean: clean
	rm -f toybox_old .config*

test: tests


	@echo  '  toybox          - Build toybox.'
	@echo  '  change          - Build each command standalone under change/.'
	@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.'
	@echo  '  install         - Install toybox into subdirectories of $$PREFIX.'
	@echo  '  uninstall_flat  - Remove toybox from $$PREFIX directory.'
	@echo  '  uninstall       - Remove toybox from subdirectories of $$PREFIX.'
	@echo  ''
	@echo  'example: CFLAGS="--static" CROSS_COMPILE=armv5l- make defconfig toybox install'
	@echo  ''