1# This is completely unsupported. 2# 3# Uasge: make -f scripts/Makefile.IMA 4# 5# Fix COMBINED_COMPILE upstream (in the Kbuild) and propagate 6# the changes back 7srctree := $(if $(KBUILD_SRC),$(KBUILD_SRC),$(CURDIR)) 8objtree := $(CURDIR) 9src := $(srctree) 10obj := $(objtree) 11 12# Make generated files 13DUMMY := $(shell $(Q)$(srctree)/scripts/gen_build_files.sh $(srctree) $(objtree) >&2) 14 15# Look for make include files relative to root of src 16MAKEFLAGS += --include-dir=$(srctree) 17 18default: busybox 19 20include .config 21 22# Cross compiling and selecting different set of gcc/bin-utils 23ifeq ($(CROSS_COMPILE),) 24CROSS_COMPILE := $(subst ",,$(CONFIG_CROSS_COMPILER_PREFIX)) 25endif 26 27ifneq ($(CROSS_COMPILE),) 28SUBARCH := $(shell echo $(CROSS_COMPILE) | cut -d- -f1) 29else 30SUBARCH := $(shell uname -m) 31endif 32SUBARCH := $(shell echo $(SUBARCH) | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \ 33 -e s/arm.*/arm/ -e s/sa110/arm/ \ 34 -e s/s390x/s390/ -e s/parisc64/parisc/ \ 35 -e s/ppc.*/powerpc/ -e s/mips.*/mips/ ) 36ARCH ?= $(SUBARCH) 37 38ifndef HOSTCC 39HOSTCC = cc 40endif 41AS = $(CROSS_COMPILE)as 42CC = $(CROSS_COMPILE)gcc 43LD = $(CC) -nostdlib 44CPP = $(CC) -E 45AR = $(CROSS_COMPILE)ar 46NM = $(CROSS_COMPILE)nm 47STRIP = $(CROSS_COMPILE)strip 48OBJCOPY = $(CROSS_COMPILE)objcopy 49OBJDUMP = $(CROSS_COMPILE)objdump 50 51CFLAGS := $(CFLAGS) 52CPPFLAGS += -D"KBUILD_STR(s)=\#s" #-Q 53 54# We need some generic definitions 55include $(srctree)/scripts/Kbuild.include 56 57include Makefile.flags 58 59-include $(srctree)/arch/$(ARCH)/Makefile 60ifdef CONFIG_FEATURE_COMPRESS_USAGE 61usage_stuff = include/usage_compressed.h 62endif 63 64ifndef BB_VER 65BB_VER:="" 66endif 67 68WHOLE_PROGRAM:=$(call cc-option,-fwhole-program,) 69 70# pull in the config stuff 71lib-all-y := applets/applets.o 72lib-y:= 73include procps/Kbuild 74lib-all-y += $(patsubst %,procps/%,$(sort $(lib-y))) 75lib-y:= 76include networking/Kbuild 77lib-all-y += $(patsubst %,networking/%,$(sort $(lib-y))) 78lib-y:= 79include networking/udhcp/Kbuild 80lib-all-y += $(patsubst %,networking/udhcp/%,$(sort $(lib-y))) 81lib-y:= 82include networking/libiproute/Kbuild 83lib-all-y += $(patsubst %,networking/libiproute/%,$(sort $(lib-y))) 84lib-y:= 85include loginutils/Kbuild 86lib-all-y += $(patsubst %,loginutils/%,$(sort $(lib-y))) 87lib-y:= 88include archival/Kbuild 89lib-all-y += $(patsubst %,archival/%,$(sort $(lib-y))) 90lib-y:= 91include archival/libarchive/Kbuild 92lib-all-y += $(patsubst %,archival/libarchive/%,$(sort $(lib-y))) 93lib-y:= 94include applets/Kbuild 95lib-all-y += $(patsubst %,applets/%,$(sort $(lib-y))) 96lib-y:= 97include e2fsprogs/Kbuild 98lib-all-y += $(patsubst %,e2fsprogs/%,$(sort $(lib-y))) 99lib-y:= 100#include e2fsprogs/old_e2fsprogs/Kbuild 101#lib-all-y += $(patsubst %,e2fsprogs/old_e2fsprogs/%,$(sort $(lib-y))) 102#lib-y:= 103#include e2fsprogs/old_e2fsprogs/ext2fs/Kbuild 104#lib-all-y += $(patsubst %,e2fsprogs/old_e2fsprogs/ext2fs/%,$(sort $(lib-y))) 105#lib-y:= 106#include e2fsprogs/old_e2fsprogs/blkid/Kbuild 107#lib-all-y += $(patsubst %,e2fsprogs/old_e2fsprogs/blkid/%,$(sort $(lib-y))) 108#lib-y:= 109#include e2fsprogs/old_e2fsprogs/uuid/Kbuild 110#lib-all-y += $(patsubst %,e2fsprogs/old_e2fsprogs/uuid/%,$(sort $(lib-y))) 111#lib-y:= 112#include e2fsprogs/old_e2fsprogs/e2p/Kbuild 113#lib-all-y += $(patsubst %,e2fsprogs/old_e2fsprogs/e2p/%,$(sort $(lib-y))) 114#lib-y:= 115include debianutils/Kbuild 116lib-all-y += $(patsubst %,debianutils/%,$(sort $(lib-y))) 117lib-y:= 118include klibc-utils/Kbuild 119lib-all-y += $(patsubst %,klibc-utils/%,$(sort $(lib-y))) 120lib-y:= 121include runit/Kbuild 122lib-all-y += $(patsubst %,runit/%,$(sort $(lib-y))) 123lib-y:= 124include modutils/Kbuild 125lib-all-y += $(patsubst %,modutils/%,$(sort $(lib-y))) 126lib-y:= 127include miscutils/Kbuild 128lib-all-y += $(patsubst %,miscutils/%,$(sort $(lib-y))) 129lib-y:= 130include mailutils/Kbuild 131lib-all-y += $(patsubst %,mailutils/%,$(sort $(lib-y))) 132lib-y:= 133include coreutils/libcoreutils/Kbuild 134lib-all-y += $(patsubst %,coreutils/libcoreutils/%,$(sort $(lib-y))) 135lib-y:= 136include coreutils/Kbuild 137lib-all-y += $(patsubst %,coreutils/%,$(sort $(lib-y))) 138lib-y:= 139include sysklogd/Kbuild 140lib-all-y += $(patsubst %,sysklogd/%,$(sort $(lib-y))) 141lib-y:= 142include shell/Kbuild 143lib-all-y += $(patsubst %,shell/%,$(sort $(lib-y))) 144lib-y:= 145include console-tools/Kbuild 146lib-all-y += $(patsubst %,console-tools/%,$(sort $(lib-y))) 147lib-y:= 148include findutils/Kbuild 149lib-all-y += $(patsubst %,findutils/%,$(sort $(lib-y))) 150lib-y:= 151include util-linux/Kbuild 152lib-all-y += $(patsubst %,util-linux/%,$(sort $(lib-y))) 153lib-y:= 154include util-linux/volume_id/Kbuild 155lib-all-y += $(patsubst %,util-linux/volume_id/%,$(sort $(lib-y))) 156lib-y:= 157include init/Kbuild 158lib-all-y += $(patsubst %,init/%,$(sort $(lib-y))) 159lib-y:= 160include libpwdgrp/Kbuild 161lib-all-y += $(patsubst %,libpwdgrp/%,$(sort $(lib-y))) 162lib-y:= 163include editors/Kbuild 164lib-all-y += $(patsubst %,editors/%,$(sort $(lib-y))) 165lib-y:= 166include printutils/Kbuild 167lib-all-y += $(patsubst %,printutils/%,$(sort $(lib-y))) 168lib-y:= 169include selinux/Kbuild 170lib-all-y += $(patsubst %,selinux/%,$(sort $(lib-y))) 171lib-y:= 172include scripts/Kbuild 173lib-all-y += $(patsubst %,scripts/%,$(sort $(lib-y))) 174lib-y:= 175include libbb/Kbuild 176lib-all-y += $(patsubst %,libbb/%,$(sort $(lib-y))) 177lib-y:= 178 179comma:=, 180busybox_unstripped.o: $(usage_stuff) include/applet_tables.h include/NUM_APPLETS.h include/autoconf.h 181 $(CC) $(CPPFLAGS) $(CFLAGS) $(EXTRA_CFLAGS) \ 182 $(patsubst %,-Wl$(comma)%,$(LDFLAGS) $(EXTRA_LDFLAGS)) \ 183 -DGCC_COMBINE=1 \ 184 --combine $(WHOLE_PROGRAM) \ 185 -funit-at-a-time -Wno-error -std=gnu99 \ 186 -c -o busybox_unstripped.o \ 187 $(lib-all-y:.o=.c) 188 189busybox: busybox_unstripped.o 190 $(srctree)/scripts/trylink \ 191 busybox_unstripped \ 192 "$(CC) $(CFLAGS_busybox)" \ 193 "$(CFLAGS)" \ 194 "$(LDFLAGS)" \ 195 "busybox_unstripped.o" \ 196 "" \ 197 "crypt m" 198 cp -f $(@)_unstripped $@ 199 -$(STRIP) -s -R .note -R .comment -R .version $@ 200 201# If .config is newer than include/autoconf.h, someone tinkered 202# with it and forgot to run make oldconfig. 203include/autoconf.h: .config 204 $(MAKE) -f $(srctree)/Makefile silentoldconfig 205 206# Override rules for host compile 207applets/usage: include/autoconf.h 208 $(HOSTCC) -Wall -O2 -I$(srctree)/include -o applets/usage applets/usage.c 209 210applets/applet_tables: include/autoconf.h 211 $(HOSTCC) -Wall -O2 -I$(srctree)/include -o applets/applet_tables applets/applet_tables.c 212