# Makefile for busybox
#
# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
# Copyright (C) 2007 by KaiGai Kohei <kaigai@kaigai.gr.jp>
#
# Licensed under the GPL v2, see the file LICENSE in this tarball.

lib-y:=

INSERT
lib-$(CONFIG_CHCON)		+= chcon.o
lib-$(CONFIG_GETENFORCE)	+= getenforce.o
lib-$(CONFIG_GETSEBOOL)		+= getsebool.o
lib-$(CONFIG_LOAD_POLICY)	+= load_policy.o
lib-$(CONFIG_MATCHPATHCON)	+= matchpathcon.o
lib-$(CONFIG_RUNCON)		+= runcon.o
lib-$(CONFIG_SELINUXENABLED)	+= selinuxenabled.o
lib-$(CONFIG_SETENFORCE)	+= setenforce.o
lib-$(CONFIG_SETFILES)		+= setfiles.o
lib-$(CONFIG_RESTORECON)	+= setfiles.o
lib-$(CONFIG_SETSEBOOL)		+= setsebool.o
lib-$(CONFIG_SESTATUS)		+= sestatus.o
