# Makefile for busybox
#
# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
#
# Licensed under GPLv2, see file LICENSE in this source tree.

lib-y:=

INSERT
lib-$(CONFIG_CHVT)		+= chvt.o
lib-$(CONFIG_FGCONSOLE)		+= fgconsole.o
lib-$(CONFIG_CLEAR)		+= clear.o
lib-$(CONFIG_DEALLOCVT)		+= deallocvt.o
lib-$(CONFIG_DUMPKMAP)		+= dumpkmap.o
lib-$(CONFIG_SETCONSOLE)	+= setconsole.o
lib-$(CONFIG_KBD_MODE)		+= kbd_mode.o
lib-$(CONFIG_LOADFONT)		+= loadfont.o
lib-$(CONFIG_LOADKMAP)		+= loadkmap.o
lib-$(CONFIG_OPENVT)		+= openvt.o
lib-$(CONFIG_RESET)		+= reset.o
lib-$(CONFIG_RESIZE)		+= resize.o
lib-$(CONFIG_SETFONT)		+= loadfont.o
lib-$(CONFIG_SETKEYCODES)	+= setkeycodes.o
lib-$(CONFIG_SETLOGCONS)	+= setlogcons.o
lib-$(CONFIG_SHOWKEY)		+= showkey.o
