1PREFIX ?= $(DESTDIR)/usr
2BINDIR ?= $(PREFIX)/bin
3MANDIR ?= $(PREFIX)/share/man
4LIBDIR ?= $(PREFIX)/lib
5INCLUDEDIR ?= $(PREFIX)/include
6
7LDLIBS = -lsepol -L$(LIBDIR)
8SECILC = secilc
9SECILC_SRCS := secilc.c
10SECILC_OBJS := $(patsubst %.c,%.o,$(SECILC_SRCS))
11
12# The secilc man page:
13MANPAGE = secilc.8
14XMLTO = xmlto
15
16CFLAGS ?= -Wall -Wshadow -Wextra -Wundef -Wmissing-format-attribute -Wcast-align -Wstrict-prototypes -Wpointer-arith -Wunused
17
18override CFLAGS += -I$(INCLUDEDIR) -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64
19
20$(SECILC): $(SECILC_OBJS)
21	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(LDLIBS)
22
23all: $(SECILC) man
24
25test: $(SECILC)
26	./$(SECILC) test/policy.cil
27
28man: $(MANPAGE).xml
29	$(XMLTO) man $(MANPAGE).xml
30
31install: all man
32	-mkdir -p $(BINDIR)
33	-mkdir -p $(MANDIR)/man8
34	install -m 755 $(SECILC) $(BINDIR)
35	install -m 644 $(MANPAGE) $(MANDIR)/man8
36
37doc:
38	$(MAKE) -C docs
39
40clean:
41	rm -f $(SECILC)
42	rm -f $(SECILC_OBJS)
43	rm -f policy.*
44	rm -f file_contexts
45	rm -f $(MANPAGE)
46
47relabel:
48
49.PHONY: all clean test install doc relabel
50