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