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

APPLETS_AR:=applets.a
ifndef $(APPLETS_DIR)
APPLETS_DIR:=$(top_builddir)/applets/
endif
srcdir=$(top_srcdir)/applets

APPLET_SRC:= $(patsubst %,$(srcdir)/%,applets.c busybox.c version.c)
APPLET_OBJ:= $(patsubst $(srcdir)/%.c,$(APPLETS_DIR)%.o, $(APPLET_SRC))

APPLET_SRC-y+=$(APPLET_SRC)
APPLET_SRC-a+=$(APPLET_SRC)

libraries-y+=$(APPLETS_DIR)$(APPLETS_AR)

$(APPLETS_DIR)$(APPLETS_AR): $(APPLET_OBJ)
	$(do_ar)

$(APPLET_OBJ): $(top_builddir)/.config 
$(APPLET_OBJ): $(APPLETS_DIR)%.o: $(srcdir)/%.c
	$(compile.c)
