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