#
# Makefile for building the checkpolicy program
#
PREFIX ?= /usr/local/selinux
BINDIR ?= $(PREFIX)/bin

# checkpolicy needs to know where to find the security server sources 
LINUXDIR ?= ../../linux-2.5
SELDIR ?= $(LINUXDIR)/security/selinux

CFLAGS = -g -I$(LINUXDIR)/include -Wall -O2 -pipe -include global.h -I$(SELDIR)/include -I$(SELDIR)/ss 

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

LIBS=-lfl

all:  checkpolicy

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

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

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 

