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

PROCPS_AR:=procps.a
ifndef $(PROCPS_DIR)
PROCPS_DIR:=$(top_builddir)/procps/
endif
srcdir=$(top_srcdir)/procps

PROCPS-y:=
PROCPS-$(CONFIG_FREE)		+= free.o
PROCPS-$(CONFIG_KILL)		+= kill.o
PROCPS-$(CONFIG_PIDOF)		+= pidof.o
PROCPS-$(CONFIG_PS)		+= ps.o
PROCPS-$(CONFIG_RENICE)		+= renice.o
PROCPS-$(CONFIG_BB_SYSCTL)	+= sysctl.o
PROCPS-$(CONFIG_TOP)		+= top.o
PROCPS-$(CONFIG_UPTIME)		+= uptime.o

libraries-y+=$(PROCPS_DIR)$(PROCPS_AR)

$(PROCPS_DIR)$(PROCPS_AR): $(patsubst %,$(PROCPS_DIR)%, $(PROCPS-y))
	$(AR) $(ARFLAGS) $@ $(patsubst %,$(PROCPS_DIR)%, $(PROCPS-y))

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

