# 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)/miscutils
objdir=$(top_builddir)/miscutils

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-$(CONFIG_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

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

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)

miscutils_OBJ:=  $(patsubst %,$(objdir)/%,$(MISCUTILS-y))

