xref: /aosp_15_r20/external/libcap/progs/Makefile (revision 2810ac1b38eead2603277920c78344c84ddf3aff)
1
2topdir=$(shell pwd)/..
3include $(topdir)/Make.Rules
4#
5# Programs: all of the examples that we will compile
6#
7PROGS=getpcaps getcap setcap
8
9BUILD=$(PROGS)
10
11all: $(BUILD) capsh
12
13ifeq ($(DYNAMIC),yes)
14LDPATH = LD_LIBRARY_PATH=../libcap
15DEPS = ../libcap/libcap.so
16else
17ifeq ($(LIBCSTATIC),yes)
18LDFLAGS = --static
19DEPS = ../libcap/libcap.a
20else
21# For this build variant override the LDFLAGS to link statically from
22# libraries within the build tree. If you never want this, use make
23# DYNAMIC=yes . Note, we can't reliably link statically against glibc
24# becasuse of https://sourceware.org/bugzilla/show_bug.cgi?id=12491 .
25LDFLAGS = -Wl,-Bstatic
26LDFLAGS_SUFFIX = -Wl,-Bdynamic
27DEPS = ../libcap/libcap.a
28endif
29endif
30
31../libcap/libcap.a:
32	$(MAKE) -C ../libcap libcap.a
33
34../libcap/libcap.so:
35	$(MAKE) -C ../libcap libcap.so
36
37$(BUILD): %: %.o $(DEPS)
38	$(CC) $(CFLAGS) $(LDFLAGS) $< $(LIBCAPLIB) $(LDFLAGS_SUFFIX) -o $@
39
40%.o: %.c $(INCS)
41	$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
42
43install: all
44	mkdir -p -m 0755 $(FAKEROOT)$(SBINDIR)
45	for p in $(PROGS) capsh ; do \
46		install -m 0755 $$p $(FAKEROOT)$(SBINDIR) ; \
47	done
48ifeq ($(RAISE_SETFCAP),yes)
49	$(FAKEROOT)$(SBINDIR)/setcap cap_setfcap=i $(FAKEROOT)$(SBINDIR)/setcap
50endif
51
52test:
53	@echo "no program tests without privilege, try 'make sudotest'"
54
55capshdoc.c.cf: capshdoc.c ./mkcapshdoc.sh
56	./mkcapshdoc.sh > $@
57	diff -u capshdoc.c $@ || (rm $@ ; exit 1)
58
59capsh: capsh.c capshdoc.c.cf capshdoc.h $(DEPS)
60	$(CC) $(CFLAGS) $(CPPFLAGS) $(CAPSH_SHELL) $(LDFLAGS) $< capshdoc.c $(LIBCAPLIB) $(LDFLAGS_SUFFIX) -o $@
61
62# Statically linked with minimal linkage flags to enable running in a
63# chroot and in other in-tree testing contexts.
64tcapsh-static: capsh.c capshdoc.c.cf capshdoc.h $(DEPS)
65	$(CC) $(CFLAGS) $(CPPFLAGS) $(CAPSH_SHELL) -o $@ $< capshdoc.c $(LIBCAPLIB) --static
66
67uns_test: ../tests/uns_test.c
68	$(MAKE) -C ../tests uns_test
69	cp ../tests/uns_test .
70
71sudotest: tcapsh-static uns_test capsh setcap getcap getpcaps tcapsh-static
72	$(SUDO) $(LDPATH) ./quicktest.sh
73
74clean:
75	$(LOCALCLEAN)
76	rm -f *.o $(BUILD) privileged ping hack.sh compare-cap uns_test
77	rm -f capsh tcapsh* capshdoc.*.cf
78