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

MODUTILS_AR:=modutils.a
ifndef $(MODUTILS_DIR)
MODUTILS_DIR:=$(top_builddir)/modutils/
endif
srcdir=$(top_srcdir)/modutils

MODUTILS-y:=
MODUTILS-$(CONFIG_INSMOD)		+= insmod.o
MODUTILS-$(CONFIG_LSMOD)		+= lsmod.o
MODUTILS-$(CONFIG_MODPROBE)		+= modprobe.o
MODUTILS-$(CONFIG_RMMOD)		+= rmmod.o

libraries-y+=$(MODUTILS_DIR)$(MODUTILS_AR)

$(MODUTILS_DIR)$(MODUTILS_AR): $(patsubst %,$(MODUTILS_DIR)%, $(MODUTILS-y))
	$(AR) $(ARFLAGS) $@ $(patsubst %,$(MODUTILS_DIR)%, $(MODUTILS-y))

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

