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

srcdir=$(top_srcdir)/archival
objdir=$(top_builddir)/archival

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

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_OBJ:=  $(patsubst %,$(objdir)/%,$(ARCHIVAL-y))

