# 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

libraries-y+=$(SHELL_DIR)$(SHELL_AR)

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))
	$(AR) $(ARFLAGS) $@ $(patsubst %,$(SHELL_DIR)%, $(SHELLT-y))

$(SHELL_DIR)%.o: $(srcdir)/%.c
	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<

