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

EDITORS-$(CONFIG_AWK)	+= awk.o
EDITORS-$(CONFIG_PATCH)	+= patch.o
EDITORS-$(CONFIG_SED)	+= sed.o
EDITORS-$(CONFIG_VI)	+= vi.o

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

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

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

editors_OBJ:=  $(patsubst %,$(objdir)/%,$(EDITORS-y))

$(editors_OBJ): $(objdir)/%.o: $(srcdir)/%.c
$(objdir)/editors.a: $(editors_OBJ)
libraries-y:=$(libraries-y) $(objdir)/editors.a

