#
# Makefile for building the checkpolicy program
#
PREFIX ?= ${DESTDIR}/usr
BINDIR ?= $(PREFIX)/bin
MANDIR ?= $(PREFIX)/share/man

# Set to y for MLS
MLS=n

ifeq ($(MLS),y)
OPTIONS = -DCONFIG_SECURITY_SELINUX_MLS
OBJS = mls.o
else
OPTIONS =
OBJS =
endif

CFLAGS = -g $(OPTIONS) -Wall -O2 -pipe

override CFLAGS += -include global.h -I. -Iinclude

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

LIBS=-lfl

all:  checkpolicy

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

%.o: %.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: all
	-mkdir -p $(BINDIR)
	-mkdir -p $(MANDIR)/man8
	install -m 755 checkpolicy $(BINDIR)	
	install -m 644 checkpolicy.8 $(MANDIR)/man8

relabel: install
	setfilecon system_u:object_r:checkpolicy_exec_t $(BINDIR)/checkpolicy

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

