File: Makefile

package info (click to toggle)
secilc 3.9-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 680 kB
  • sloc: ansic: 704; xml: 461; makefile: 149
file content (90 lines) | stat: -rw-r--r-- 2,525 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
PREFIX ?= /usr
BINDIR ?= $(PREFIX)/bin
MANDIR ?= $(PREFIX)/share/man

SECILC = secilc
SECILC_SRCS := secilc.c
SECILC_OBJS := $(patsubst %.c,%.o,$(SECILC_SRCS))

SECIL2CONF = secil2conf
SECIL2CONF_SRCS := secil2conf.c
SECIL2CONF_OBJS := $(patsubst %.c,%.o,$(SECIL2CONF_SRCS))

SECIL2TREE = secil2tree
SECIL2TREE_SRCS := secil2tree.c
SECIL2TREE_OBJS := $(patsubst %.c,%.o,$(SECIL2TREE_SRCS))

SECILC_MANPAGE = secilc.8
SECIL2CONF_MANPAGE = secil2conf.8
SECIL2TREE_MANPAGE = secil2tree.8
XMLTO = xmlto
DIFF = diff

CHECKPOLICY = checkpolicy
POL_VERS = $(shell $(CHECKPOLICY) -V | cut -f 1 -d ' ')

CFLAGS ?= -Wall -Wshadow -Wextra -Wundef -Wmissing-format-attribute -Wcast-align -Wstrict-prototypes -Wpointer-arith -Wunused

override CFLAGS += -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64
override LDLIBS += -lsepol

all: $(SECILC) $(SECIL2CONF) $(SECIL2TREE) man

$(SECILC): $(SECILC_OBJS)
	$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS)

test: $(SECILC)
	./$(SECILC) test/policy.cil
	./$(SECILC) -c $(POL_VERS) -O -M 1 -f /dev/null -o opt-actual.bin test/opt-input.cil
	$(CHECKPOLICY) -b -C -M -o opt-actual.cil opt-actual.bin >/dev/null
	$(DIFF) test/opt-expected.cil opt-actual.cil

$(SECIL2CONF): $(SECIL2CONF_OBJS)
	$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS)

$(SECIL2TREE): $(SECIL2TREE_OBJS)
	$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS)

man: $(SECILC_MANPAGE) $(SECIL2CONF_MANPAGE) $(SECIL2TREE_MANPAGE)

$(SECILC_MANPAGE): $(SECILC_MANPAGE).xml
	$(XMLTO) man $(SECILC_MANPAGE).xml

$(SECIL2CONF_MANPAGE): $(SECIL2CONF_MANPAGE).xml
	$(XMLTO) man $(SECIL2CONF_MANPAGE).xml

$(SECIL2TREE_MANPAGE): $(SECIL2TREE_MANPAGE).xml
	$(XMLTO) man $(SECIL2TREE_MANPAGE).xml

install: all man
	-mkdir -p $(DESTDIR)$(BINDIR)
	-mkdir -p $(DESTDIR)$(MANDIR)/man8
	install -m 755 $(SECILC) $(DESTDIR)$(BINDIR)
	install -m 755 $(SECIL2CONF) $(DESTDIR)$(BINDIR)
	install -m 755 $(SECIL2TREE) $(DESTDIR)$(BINDIR)
	install -m 644 $(SECILC_MANPAGE) $(DESTDIR)$(MANDIR)/man8
	install -m 644 $(SECIL2CONF_MANPAGE) $(DESTDIR)$(MANDIR)/man8
	install -m 644 $(SECIL2TREE_MANPAGE) $(DESTDIR)$(MANDIR)/man8

doc:
	$(MAKE) -C docs

clean:
	rm -f $(SECILC)
	rm -f $(SECILC_OBJS)
	rm -f $(SECIL2CONF)
	rm -f $(SECIL2CONF_OBJS)
	rm -f $(SECIL2TREE)
	rm -f $(SECIL2TREE_OBJS)
	rm -f policy.*
	rm -f file_contexts
	rm -f $(SECILC_MANPAGE)
	rm -f $(SECIL2CONF_MANPAGE)
	rm -f $(SECIL2TREE_MANPAGE)
	rm -f opt-actual.cil
	rm -f opt-actual.bin
	$(MAKE) -C docs clean

relabel:

.PHONY: all clean test install doc relabel man