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