# This is completely unsupported.
# Fix COMBINED_COMPILE upstream (in the Kbuild) and propagate
# the changes back
srctree		:= $(if $(KBUILD_SRC),$(KBUILD_SRC),$(CURDIR))
objtree		:= $(CURDIR)
src		:= $(srctree)
obj		:= $(objtree)

# Look for make include files relative to root of kernel src
MAKEFLAGS += --include-dir=$(srctree)

default: busybox

ifndef HOSTCC
HOSTCC = cc
endif
AS              = $(CROSS_COMPILE)as
CC              = $(CROSS_COMPILE)gcc
LD              = $(CC) -nostdlib
CPP             = $(CC) -E
AR              = $(CROSS_COMPILE)ar
NM              = $(CROSS_COMPILE)nm
STRIP           = $(CROSS_COMPILE)strip
OBJCOPY         = $(CROSS_COMPILE)objcopy
OBJDUMP         = $(CROSS_COMPILE)objdump

CFLAGS := $(CFLAGS)
CPPFLAGS+= -D"KBUILD_STR(s)=\#s" #-Q

include .config
# We need some generic definitions
include $(srctree)/scripts/Kbuild.include

include Makefile.flags
ifdef CONFIG_FEATURE_COMPRESS_USAGE
usage_stuff = include/usage_compressed.h
endif

ifndef BB_VER
BB_VER:=""
endif

WHOLE_PROGRAM:=$(call cc-option,-fwhole-program,)

# pull in the config stuff
lib-all-y := applets/applets.o
lib-y:=
include procps/Kbuild
lib-all-y += $(patsubst %,procps/%,$(sort $(lib-y)))
lib-y:=
include networking/Kbuild
lib-all-y += $(patsubst %,networking/%,$(sort $(lib-y)))
lib-y:=
include networking/udhcp/Kbuild
lib-all-y += $(patsubst %,networking/udhcp/%,$(sort $(lib-y)))
lib-y:=
include networking/libiproute/Kbuild
lib-all-y += $(patsubst %,networking/libiproute/%,$(sort $(lib-y)))
lib-y:=
include loginutils/Kbuild
lib-all-y += $(patsubst %,loginutils/%,$(sort $(lib-y)))
lib-y:=
include archival/Kbuild
lib-all-y += $(patsubst %,archival/%,$(sort $(lib-y)))
lib-y:=
include archival/libunarchive/Kbuild
lib-all-y += $(patsubst %,archival/libunarchive/%,$(sort $(lib-y)))
lib-y:=
include applets/Kbuild
lib-all-y += $(patsubst %,applets/%,$(sort $(lib-y)))
lib-y:=
include e2fsprogs/Kbuild
lib-all-y += $(patsubst %,e2fsprogs/%,$(sort $(lib-y)))
lib-y:=
#include e2fsprogs/old_e2fsprogs/Kbuild
#lib-all-y += $(patsubst %,e2fsprogs/old_e2fsprogs/%,$(sort $(lib-y)))
#lib-y:=
#include e2fsprogs/old_e2fsprogs/ext2fs/Kbuild
#lib-all-y += $(patsubst %,e2fsprogs/old_e2fsprogs/ext2fs/%,$(sort $(lib-y)))
#lib-y:=
#include e2fsprogs/old_e2fsprogs/blkid/Kbuild
#lib-all-y += $(patsubst %,e2fsprogs/old_e2fsprogs/blkid/%,$(sort $(lib-y)))
#lib-y:=
#include e2fsprogs/old_e2fsprogs/uuid/Kbuild
#lib-all-y += $(patsubst %,e2fsprogs/old_e2fsprogs/uuid/%,$(sort $(lib-y)))
#lib-y:=
#include e2fsprogs/old_e2fsprogs/e2p/Kbuild
#lib-all-y += $(patsubst %,e2fsprogs/old_e2fsprogs/e2p/%,$(sort $(lib-y)))
#lib-y:=
include debianutils/Kbuild
lib-all-y += $(patsubst %,debianutils/%,$(sort $(lib-y)))
lib-y:=
include runit/Kbuild
lib-all-y += $(patsubst %,runit/%,$(sort $(lib-y)))
lib-y:=
include modutils/Kbuild
lib-all-y += $(patsubst %,modutils/%,$(sort $(lib-y)))
lib-y:=
include miscutils/Kbuild
lib-all-y += $(patsubst %,miscutils/%,$(sort $(lib-y)))
lib-y:=
include coreutils/libcoreutils/Kbuild
lib-all-y += $(patsubst %,coreutils/libcoreutils/%,$(sort $(lib-y)))
lib-y:=
include coreutils/Kbuild
lib-all-y += $(patsubst %,coreutils/%,$(sort $(lib-y)))
lib-y:=
include sysklogd/Kbuild
lib-all-y += $(patsubst %,sysklogd/%,$(sort $(lib-y)))
lib-y:=
include shell/Kbuild
lib-all-y += $(patsubst %,shell/%,$(sort $(lib-y)))
lib-y:=
include console-tools/Kbuild
lib-all-y += $(patsubst %,console-tools/%,$(sort $(lib-y)))
lib-y:=
include findutils/Kbuild
lib-all-y += $(patsubst %,findutils/%,$(sort $(lib-y)))
lib-y:=
include util-linux/Kbuild
lib-all-y += $(patsubst %,util-linux/%,$(sort $(lib-y)))
lib-y:=
include util-linux/volume_id/Kbuild
lib-all-y += $(patsubst %,util-linux/volume_id/%,$(sort $(lib-y)))
lib-y:=
include init/Kbuild
lib-all-y += $(patsubst %,init/%,$(sort $(lib-y)))
lib-y:=
include libpwdgrp/Kbuild
lib-all-y += $(patsubst %,libpwdgrp/%,$(sort $(lib-y)))
lib-y:=
include editors/Kbuild
lib-all-y += $(patsubst %,editors/%,$(sort $(lib-y)))
lib-y:=
include printutils/Kbuild
lib-all-y += $(patsubst %,printutils/%,$(sort $(lib-y)))
lib-y:=
include selinux/Kbuild
lib-all-y += $(patsubst %,selinux/%,$(sort $(lib-y)))
lib-y:=
include scripts/Kbuild
lib-all-y += $(patsubst %,scripts/%,$(sort $(lib-y)))
lib-y:=
include libbb/Kbuild
lib-all-y += $(patsubst %,libbb/%,$(sort $(lib-y)))
lib-y:=

comma:=,
busybox_unstripped.o: $(usage_stuff) include/applet_tables.h include/autoconf.h
	$(CC) $(CPPFLAGS) $(CFLAGS) $(EXTRA_CFLAGS) \
		$(patsubst %,-Wl$(comma)%,$(LDFLAGS) $(EXTRA_LDFLAGS)) \
		-DGCC_COMBINE=1 \
		--combine $(WHOLE_PROGRAM) \
		-funit-at-a-time -Wno-error -std=gnu99  \
		-c -o busybox_unstripped.o \
		$(lib-all-y:.o=.c)

busybox: busybox_unstripped.o
	$(srctree)/scripts/trylink \
		busybox_unstripped \
		"$(CC)" \
		"$(CFLAGS)" \
		"$(LDFLAGS)" \
		"busybox_unstripped.o" \
		"" \
		"crypt m"
	cp -f $(@)_unstripped $@
	-$(STRIP) -s -R .note -R .comment -R .version $@

# If .config is newer than include/autoconf.h, someone tinkered
# with it and forgot to run make oldconfig.
include/autoconf.h: .config
	$(MAKE) -f $(srctree)/Makefile silentoldconfig

applets/usage: include/autoconf.h
	$(HOSTCC) -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -I$(srctree)/include -o applets/usage applets/usage.c

applets/applet_tables: include/autoconf.h
	$(HOSTCC) -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -I$(srctree)/include -o applets/applet_tables applets/applet_tables.c

include/usage_compressed.h: $(srctree)/include/usage.h applets/usage
	$(srctree)/applets/usage_compressed include/usage_compressed.h applets

include/applet_tables.h: $(srctree)/include/applets.h
	applets/applet_tables include/applet_tables.h
