# 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.

SHELL_AR:=shell.a
ifndef $(SHELL_DIR)
SHELL_DIR:=$(top_builddir)/shell/
endif
srcdir=$(top_srcdir)/shell

SHELLT-y:=
SHELLT-$(CONFIG_ASH)				+= ash.o
SHELLT-$(CONFIG_HUSH)				+= hush.o
SHELLT-$(CONFIG_LASH)				+= lash.o
SHELLT-$(CONFIG_MSH)				+= msh.o
SHELLT-$(CONFIG_FEATURE_COMMAND_EDITING)	+= cmdedit.o

ifneq ($(strip $(SHELLT-y)),)
libraries-y+=$(SHELL_DIR)$(SHELL_AR)
endif

SHELLT_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(SHELLT-y))
SHELLT_SRC-a:=$(wildcard $(srcdir)/*.c)
APPLET_SRC-y+=$(SHELLT_SRC-y)
APPLET_SRC-a+=$(SHELLT_SRC-a)

$(SHELL_DIR)$(SHELL_AR): $(patsubst %,$(SHELL_DIR)%, $(SHELLT-y))
	$(do_ar)

$(SHELL_DIR)%.o: $(srcdir)/%.c
	$(compile.c)
