# 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_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_DIR)$(ARCHIVAL_AR): $(patsubst %,$(ARCHIVAL_DIR)%, $(ARCHIVAL-y))
	$(AR) $(ARFLAGS) $@ $(patsubst %,$(ARCHIVAL_DIR)%, $(ARCHIVAL-y))

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

