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

SYSKLOGD_AR:=sysklogd.a
ifndef $(SYSKLOGD_DIR)
SYSKLOGD_DIR:=$(top_builddir)/sysklogd/
endif
srcdir=$(top_srcdir)/sysklogd

SYSKLOGD-y:=
SYSKLOGD-$(CONFIG_KLOGD)		+= klogd.o
SYSKLOGD-$(CONFIG_LOGGER)		+= logger.o
SYSKLOGD-$(CONFIG_LOGREAD)		+= logread.o
SYSKLOGD-$(CONFIG_SYSLOGD)		+= syslogd.o

libraries-y+=$(SYSKLOGD_DIR)$(SYSKLOGD_AR)

$(SYSKLOGD_DIR)$(SYSKLOGD_AR): $(patsubst %,$(SYSKLOGD_DIR)%, $(SYSKLOGD-y))
	$(AR) $(ARFLAGS) $@ $(patsubst %,$(SYSKLOGD_DIR)%, $(SYSKLOGD-y))

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

