xref: /aosp_15_r20/external/selinux/policycoreutils/newrole/Makefile (revision 2d543d20722ada2425b5bdab9d0d1d29470e7bba)
1# Installation directories.
2LINGUAS ?=
3PREFIX ?= /usr
4BINDIR ?= $(PREFIX)/bin
5MANDIR ?= $(PREFIX)/share/man
6ETCDIR ?= /etc
7LOCALEDIR = $(DESTDIR)$(PREFIX)/share/locale
8INCLUDEDIR ?= $(PREFIX)/include
9PAMH ?= $(shell test -f $(INCLUDEDIR)/security/pam_appl.h && echo y)
10AUDITH ?= $(shell test -f $(INCLUDEDIR)/libaudit.h && echo y)
11# Enable capabilities to permit newrole to generate audit records.
12# This will make newrole a setuid root program.
13# The capabilities used are: CAP_AUDIT_WRITE.
14AUDIT_LOG_PRIV ?= n
15# Enable capabilities to permit newrole to utilize the pam_namespace module.
16# This will make newrole a setuid root program.
17# The capabilities used are: CAP_SYS_ADMIN, CAP_CHOWN, CAP_FOWNER and
18# CAP_DAC_OVERRIDE.
19NAMESPACE_PRIV ?= n
20# If LSPP_PRIV is y, then newrole will be made into setuid root program.
21# Enabling this option will force AUDIT_LOG_PRIV and NAMESPACE_PRIV to be y.
22LSPP_PRIV ?= n
23VERSION = $(shell cat ../VERSION)
24
25CFLAGS ?= -Werror -Wall -W
26EXTRA_OBJS =
27override CFLAGS += -DVERSION=\"$(VERSION)\" -DUSE_NLS -DLOCALEDIR="\"$(LOCALEDIR)\"" -DPACKAGE="\"policycoreutils\""
28override LDLIBS += -lselinux
29ifeq ($(PAMH), y)
30	override CFLAGS += -DUSE_PAM
31	EXTRA_OBJS += hashtab.o
32	override LDLIBS += -lpam -lpam_misc
33else
34	override CFLAGS += -D_XOPEN_SOURCE=500
35	override LDLIBS += -lcrypt
36endif
37ifeq ($(AUDITH), y)
38	override CFLAGS += -DUSE_AUDIT
39	override LDLIBS += -laudit
40endif
41ifeq ($(LSPP_PRIV),y)
42	override AUDIT_LOG_PRIV=y
43	override NAMESPACE_PRIV=y
44endif
45ifeq ($(AUDIT_LOG_PRIV),y)
46	override CFLAGS += -DAUDIT_LOG_PRIV
47	IS_SUID=y
48endif
49ifeq ($(NAMESPACE_PRIV),y)
50	override CFLAGS += -DNAMESPACE_PRIV
51	IS_SUID=y
52endif
53ifeq ($(IS_SUID),y)
54	MODE := 4555
55	override LDLIBS += -lcap-ng
56else
57	MODE := 0555
58endif
59
60all: newrole
61
62newrole: newrole.o $(EXTRA_OBJS)
63	$(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)
64
65install: all
66	test -d $(DESTDIR)$(BINDIR)      || install -m 755 -d $(DESTDIR)$(BINDIR)
67	test -d $(DESTDIR)$(ETCDIR)/pam.d || install -m 755 -d $(DESTDIR)$(ETCDIR)/pam.d
68	test -d $(DESTDIR)$(MANDIR)/man1 || install -m 755 -d $(DESTDIR)$(MANDIR)/man1
69	install -m $(MODE) newrole $(DESTDIR)$(BINDIR)
70	install -m 644 newrole.1 $(DESTDIR)$(MANDIR)/man1/
71	for lang in $(LINGUAS) ; do \
72		if [ -e $${lang} ] ; then \
73			test -d $(DESTDIR)$(MANDIR)/$${lang}/man1 || install -m 755 -d $(DESTDIR)$(MANDIR)/$${lang}/man1 ; \
74			install -m 644 $${lang}/*.1 $(DESTDIR)$(MANDIR)/$${lang}/man1/ ; \
75		fi ; \
76	done
77ifeq ($(PAMH), y)
78	test -d $(DESTDIR)$(ETCDIR)/pam.d || install -m 755 -d $(DESTDIR)$(ETCDIR)/pam.d
79ifeq ($(LSPP_PRIV),y)
80	install -m 644 newrole-lspp.pamd $(DESTDIR)$(ETCDIR)/pam.d/newrole
81else
82	install -m 644 newrole.pamd $(DESTDIR)$(ETCDIR)/pam.d/newrole
83endif
84endif
85
86clean:
87	rm -f newrole *.o
88
89indent:
90	../../scripts/Lindent $(wildcard *.[ch])
91
92relabel: install
93	/sbin/restorecon $(DESTDIR)$(BINDIR)/newrole
94
95test-build-options:
96	$(MAKE) PAMH=y AUDITH=y AUDIT_LOG_PRIV=y NAMESPACE_PRIV=y clean newrole
97	$(MAKE) PAMH=y AUDITH=y AUDIT_LOG_PRIV=y NAMESPACE_PRIV=n clean newrole
98	$(MAKE) PAMH=y AUDITH=y AUDIT_LOG_PRIV=n NAMESPACE_PRIV=y clean newrole
99	$(MAKE) PAMH=y AUDITH=y AUDIT_LOG_PRIV=n NAMESPACE_PRIV=n clean newrole
100	$(MAKE) PAMH=y AUDITH=y AUDIT_LOG_PRIV=y NAMESPACE_PRIV=y clean newrole
101	$(MAKE) PAMH=y AUDITH=n AUDIT_LOG_PRIV=n NAMESPACE_PRIV=y clean newrole
102	$(MAKE) PAMH=y AUDITH=n AUDIT_LOG_PRIV=n NAMESPACE_PRIV=n clean newrole
103	$(MAKE) PAMH=n AUDITH=y AUDIT_LOG_PRIV=y NAMESPACE_PRIV=n clean newrole
104	$(MAKE) PAMH=n AUDITH=y AUDIT_LOG_PRIV=n NAMESPACE_PRIV=n clean newrole
105	$(MAKE) PAMH=n AUDITH=n AUDIT_LOG_PRIV=n NAMESPACE_PRIV=n clean newrole
106	$(MAKE) clean
107