|  | # Makefile for busybox. | 
|  | # Barret Rhoden | 
|  | # | 
|  | # make [all] will do a full install with the default config. | 
|  | # | 
|  | # make x86_64|riscv will set the cross compiler in the .config.  You can also | 
|  | # pass CROSS_COMPILE.  The top-level Makefile should be able to call this, but | 
|  | # it is not necessary to do so. | 
|  | # | 
|  | # Uppercase variables are 'global', in the sense that we may have them exported | 
|  | # from parent makefiles or overridden by a Makelocal. | 
|  | # | 
|  | # You can also maintain your own config and override BUSYBOX_CONFIG.  Anything | 
|  | # named local-config-* will be ignored by git. | 
|  | # | 
|  | # If you are porting new versions of busybox, you'll have to download the | 
|  | # upstream patches manually.  It wasn't worth the effort to automate that. | 
|  | # | 
|  | # As new patches are added, you should just need to make.  Busybox is small | 
|  | # enough that I just trash the old one and rebuild whenever there is a change. | 
|  | # If there is a new CC, you may need to make clean. | 
|  | # | 
|  | # TODO: | 
|  | # 	- make target for building a clone of -akaros for fast diffing and such | 
|  | # 	- make busybox target from the top-level Makefile | 
|  | # 	- port to the latest busybox version | 
|  |  | 
|  | include ../../Makefrag | 
|  |  | 
|  | busybox-version := 1.17.3 | 
|  |  | 
|  | install-prefix ?= $(FIRST_KFS_PATH) | 
|  | BUSYBOX_CONFIG ?= defconfig-$(busybox-version) | 
|  |  | 
|  | PHONY := all | 
|  | all: busybox-install | 
|  |  | 
|  | akaros-patches := $(sort $(wildcard akaros-patches/$(busybox-version)/*)) | 
|  | upstream-patches := $(sort $(wildcard upstream-patches/$(busybox-version)/*)) | 
|  |  | 
|  | %.tar.bz2: | 
|  | $(Q)wget http://www.busybox.net/downloads/$@ | 
|  |  | 
|  | busybox-$(busybox-version)-akaros: busybox-$(busybox-version).tar.bz2 \ | 
|  | $(akaros-patches) $(upstream-patches) \ | 
|  | $(BUSYBOX_CONFIG) | 
|  | @echo "Extracting and patching Busybox $(busybox-version)" | 
|  | $(Q)rm -rf $@ | 
|  | $(Q)tar -jxf $< | 
|  | $(Q)mv busybox-$(busybox-version) $@ | 
|  | $(Q)cp $(BUSYBOX_CONFIG) $@/.config | 
|  | $(Q)cd $@; \ | 
|  | for i in $(upstream-patches); do \ | 
|  | patch -p1 < ../$$i; \ | 
|  | done; \ | 
|  | for i in $(akaros-patches); do \ | 
|  | patch -p1 < ../$$i; \ | 
|  | done | 
|  |  | 
|  | PHONY += busybox-config | 
|  | busybox-config: busybox-$(busybox-version)-akaros | 
|  | $(Q)sed -i '/CONFIG_PREFIX/ c CONFIG_PREFIX="$(install-prefix)"' $</.config | 
|  | $(Q)sed -i '/CROSS_COMPILER_PREFIX/ c CONFIG_CROSS_COMPILER_PREFIX="$(CROSS_COMPILE)"' $</.config | 
|  |  | 
|  | PHONY += busybox-make | 
|  | busybox-make: busybox-config | 
|  | @echo "Making busybox" | 
|  | $(Q)cd busybox-$(busybox-version)-akaros && $(MAKE) | 
|  |  | 
|  | PHONY += busybox-install | 
|  | busybox-install: busybox-make | 
|  | $(Q)cd busybox-$(busybox-version)-akaros && $(MAKE) install | 
|  | $(Q)cp busybox-$(busybox-version)-akaros/busybox_unstripped \ | 
|  | $(install-prefix)/bin/busybox | 
|  |  | 
|  | PHONY += clean | 
|  | clean: | 
|  | $(Q)rm -rf busybox-$(busybox-version)-akaros | 
|  |  | 
|  | PHONY += mrproper | 
|  | mrproper: clean | 
|  | $(Q)rm -rf busybox-$(busybox-version) | 
|  |  | 
|  | Makefile: ; # avoid implicit rule on Makefile | 
|  |  | 
|  | # Declare the contents of the .PHONY variable as phony.  We keep that | 
|  | # information in a variable so we can use it in if_changed and friends. | 
|  | .PHONY: $(PHONY) |