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

MISCUTILS_AR:=miscutils.a
ifndef $(MISCUTILS_DIR)
MISCUTILS_DIR:=$(top_builddir)/miscutils/
endif
srcdir=$(top_srcdir)/miscutils

MISCUTILS-y:=
MISCUTILS-$(CONFIG_ADJTIMEX)    += adjtimex.o
MISCUTILS-$(CONFIG_CROND)       += crond.o
MISCUTILS-$(CONFIG_CRONTAB)     += crontab.o
MISCUTILS-$(CONFIG_BBCONFIG)    += bbconfig.o
MISCUTILS-$(CONFIG_DC)          += dc.o
MISCUTILS-$(CONFIG_DEVFSD)      += devfsd.o
MISCUTILS-$(CONFIG_EJECT)       += eject.o
MISCUTILS-$(CONFIG_HDPARM)      += hdparm.o
MISCUTILS-$(CONFIG_LAST)        += last.o
MISCUTILS-${CONFIG_LESS}        += less.o
MISCUTILS-$(CONFIG_MAKEDEVS)    += makedevs.o
MISCUTILS-$(CONFIG_MOUNTPOINT)  += mountpoint.o
MISCUTILS-$(CONFIG_MT)          += mt.o
MISCUTILS-$(BB_APPLET_RUNLEVEL) += runlevel.o
MISCUTILS-$(CONFIG_RX)          += rx.o
MISCUTILS-$(CONFIG_SETSID)      += setsid.o
MISCUTILS-$(CONFIG_STRINGS)     += strings.o
MISCUTILS-$(CONFIG_TIME)        += time.o
MISCUTILS-$(CONFIG_WATCHDOG)    += watchdog.o

libraries-y+=$(MISCUTILS_DIR)$(MISCUTILS_AR)

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

needlibm-y:=
needlibm-$(CONFIG_DC) := y

ifeq ($(needlibm-y),y)
  LIBRARIES := -lm $(filter-out -lm,$(LIBRARIES))
endif

$(MISCUTILS_DIR)$(MISCUTILS_AR): $(patsubst %,$(MISCUTILS_DIR)%, $(MISCUTILS-y))
	$(AR) $(ARFLAGS) $@ $(patsubst %,$(MISCUTILS_DIR)%, $(MISCUTILS-y))

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

