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

libs-y			+= libcoreutils/

lib-y:=
lib-$(CONFIG_BASENAME)  += basename.o
lib-$(CONFIG_CAL)       += cal.o
lib-$(CONFIG_CAT)       += cat.o
lib-$(CONFIG_LESS)      += cat.o # less uses it if stdout isn't a tty
lib-$(CONFIG_CATV)      += catv.o
lib-$(CONFIG_CHGRP)     += chgrp.o chown.o
lib-$(CONFIG_CHMOD)     += chmod.o
lib-$(CONFIG_CHOWN)     += chown.o
lib-$(CONFIG_CHROOT)    += chroot.o
lib-$(CONFIG_CKSUM)     += cksum.o
lib-$(CONFIG_CMP)       += cmp.o
lib-$(CONFIG_COMM)      += comm.o
lib-$(CONFIG_CP)        += cp.o
lib-$(CONFIG_CUT)       += cut.o
lib-$(CONFIG_DATE)      += date.o
lib-$(CONFIG_DD)        += dd.o
lib-$(CONFIG_DF)        += df.o
lib-$(CONFIG_DIFF)      += diff.o
lib-$(CONFIG_DIRNAME)   += dirname.o
lib-$(CONFIG_DOS2UNIX)  += dos2unix.o
lib-$(CONFIG_DU)        += du.o
lib-$(CONFIG_ECHO)      += echo.o
lib-$(CONFIG_ASH)       += echo.o # used by ash
lib-$(CONFIG_ENV)       += env.o
lib-$(CONFIG_EXPR)      += expr.o
lib-$(CONFIG_FALSE)     += false.o
lib-$(CONFIG_FOLD)      += fold.o
lib-$(CONFIG_HEAD)      += head.o
lib-$(CONFIG_HOSTID)    += hostid.o
lib-$(CONFIG_ID)        += id.o
lib-$(CONFIG_INSTALL)   += install.o
lib-$(CONFIG_LENGTH)    += length.o
lib-$(CONFIG_LN)        += ln.o
lib-$(CONFIG_LOGNAME)   += logname.o
lib-$(CONFIG_LS)        += ls.o
lib-$(CONFIG_MD5SUM)    += md5_sha1_sum.o
lib-$(CONFIG_MKDIR)     += mkdir.o
lib-$(CONFIG_MKFIFO)    += mkfifo.o
lib-$(CONFIG_MKNOD)     += mknod.o
lib-$(CONFIG_MV)        += mv.o
lib-$(CONFIG_NICE)      += nice.o
lib-$(CONFIG_NOHUP)     += nohup.o
lib-$(CONFIG_OD)        += od.o
lib-$(CONFIG_PRINTENV)  += printenv.o
lib-$(CONFIG_PRINTF)    += printf.o
lib-$(CONFIG_PWD)       += pwd.o
lib-$(CONFIG_REALPATH)  += realpath.o
lib-$(CONFIG_RM)        += rm.o
lib-$(CONFIG_RMDIR)     += rmdir.o
lib-$(CONFIG_SEQ)       += seq.o
lib-$(CONFIG_SHA1SUM)   += md5_sha1_sum.o
lib-$(CONFIG_SLEEP)     += sleep.o
lib-$(CONFIG_SORT)      += sort.o
lib-$(CONFIG_STAT)      += stat.o
lib-$(CONFIG_STTY)      += stty.o
lib-$(CONFIG_SUM)       += sum.o
lib-$(CONFIG_SYNC)      += sync.o
lib-$(CONFIG_TAIL)      += tail.o
lib-$(CONFIG_TEE)       += tee.o
lib-$(CONFIG_TEST)      += test.o
lib-$(CONFIG_ASH)       += test.o # used by ash
lib-$(CONFIG_TOUCH)     += touch.o
lib-$(CONFIG_TR)        += tr.o
lib-$(CONFIG_TRUE)      += true.o
lib-$(CONFIG_TTY)       += tty.o
lib-$(CONFIG_UNAME)     += uname.o
lib-$(CONFIG_UNIQ)      += uniq.o
lib-$(CONFIG_USLEEP)    += usleep.o
lib-$(CONFIG_UUDECODE)  += uudecode.o
lib-$(CONFIG_UUENCODE)  += uuencode.o
lib-$(CONFIG_WATCH)     += watch.o
lib-$(CONFIG_WC)        += wc.o
lib-$(CONFIG_WHO)       += who.o
lib-$(CONFIG_WHOAMI)    += whoami.o
lib-$(CONFIG_YES)       += yes.o
