#
# Makefile for building the checkpolicy program
#

BINDIR=/usr/local/selinux/bin

# Set to y if MLS is enabled in the module.
MLS=n

LSMVER=-2.4
LSMDIR=../../../lsm$(LSMVER)
MODDIR=$(LSMDIR)/security/selinux

ifeq ($(MLS),y)
OPTIONS = -DCONFIG_SECURITY_SELINUX_MLS
else
OPTIONS = 
endif

CFLAGS = -g $(OPTIONS) -I$(LSMDIR)/include -Wall -O2 -pipe -include $(MODDIR)/ss/global.h -I$(MODDIR)/include -I$(MODDIR)/ss 

OBJS = ebitmap.o queue.o hashtab.o symtab.o sidtab.o avtab.o policydb.o services.o y.tab.o lex.yy.o checkpolicy.o 

ifeq ($(MLS),y)
OBJS += mls.o
endif

LIBS=-lfl

checkpolicy: $(OBJS)
	$(CC) -o $@ $^ $(LIBS)

%.o: $(MODDIR)/ss/%.c 
	$(CC) $(CFLAGS) -o $@ -c $<

y.tab.o: y.tab.c
	$(CC) $(CFLAGS) -o $@ -c $<

lex.yy.o: lex.yy.c
	$(CC) $(CFLAGS) -o $@ -c $<

y.tab.c: policy_parse.y
	$(YACC) -d policy_parse.y

lex.yy.c: policy_scan.l
	$(LEX) policy_scan.l

install: checkpolicy
	install -m 755 checkpolicy $(BINDIR)	

clean:
	rm -f checkpolicy $(OBJS) y.tab.c y.tab.h lex.yy.c 

