# Makefile for busybox
#
# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
#
# Licensed under the GPL v2, see the file LICENSE in this tarball.

obj-y :=
obj-y += applets.o

hostprogs-y:=
hostprogs-y += usage usage_pod applet_tables

always:= $(hostprogs-y)

# Generated files need additional love

# This trick decreases amount of rebuilds
# if tree is merely renamed/copied
ifeq ($(srctree),$(objtree))
srctree_slash =
else
srctree_slash = $(srctree)/
endif

HOSTCFLAGS_usage.o = -I$(srctree_slash)include -Iinclude
HOSTCFLAGS_usage_pod.o = -I$(srctree_slash)include -Iinclude

applets/applets.o: include/usage_compressed.h include/applet_tables.h

applets/applet_tables: .config
applets/usage:         .config
applets/usage_pod:     .config include/applet_tables.h

quiet_cmd_gen_usage_compressed = GEN     include/usage_compressed.h
      cmd_gen_usage_compressed = $(srctree_slash)applets/usage_compressed include/usage_compressed.h applets

include/usage_compressed.h: applets/usage $(srctree_slash)applets/usage_compressed
	$(call cmd,gen_usage_compressed)

quiet_cmd_gen_applet_tables = GEN     include/applet_tables.h
      cmd_gen_applet_tables = applets/applet_tables include/applet_tables.h

include/applet_tables.h: applets/applet_tables
	$(call cmd,gen_applet_tables)
