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

ARCHIVAL_AR:=archival.a
ifndef $(ARCHIVAL_DIR)
ARCHIVAL_DIR:=$(top_builddir)/archival/
endif
srcdir=$(top_srcdir)/archival

ARCHIVAL-y:=
ARCHIVAL-$(CONFIG_APT_GET)	+=
ARCHIVAL-$(CONFIG_AR)		+= ar.o
ARCHIVAL-$(CONFIG_BUNZIP2)	+= bunzip2.o
ARCHIVAL-$(CONFIG_UNLZMA)	+= unlzma.o
ARCHIVAL-$(CONFIG_CPIO)		+= cpio.o
ARCHIVAL-$(CONFIG_DPKG)		+= dpkg.o
ARCHIVAL-$(CONFIG_DPKG_DEB)	+= dpkg_deb.o
ARCHIVAL-$(CONFIG_GUNZIP)	+= gunzip.o
ARCHIVAL-$(CONFIG_GZIP)		+= gzip.o
ARCHIVAL-$(CONFIG_RPM2CPIO)	+= rpm2cpio.o
ARCHIVAL-$(CONFIG_RPM)		+= rpm.o
ARCHIVAL-$(CONFIG_TAR)		+= tar.o
ARCHIVAL-$(CONFIG_UNCOMPRESS)	+= uncompress.o
ARCHIVAL-$(CONFIG_UNZIP)	+= unzip.o

libraries-y+=$(ARCHIVAL_DIR)$(ARCHIVAL_AR)

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

$(ARCHIVAL_DIR)$(ARCHIVAL_AR): $(patsubst %,$(ARCHIVAL_DIR)%, $(ARCHIVAL-y))
	$(do_ar)

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