aboutsummaryrefslogtreecommitdiff
path: root/progs/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'progs/Makefile')
-rw-r--r--progs/Makefile43
1 files changed, 28 insertions, 15 deletions
diff --git a/progs/Makefile b/progs/Makefile
index 2c3c993..80f890a 100644
--- a/progs/Makefile
+++ b/progs/Makefile
@@ -14,21 +14,31 @@ ifeq ($(DYNAMIC),yes)
LDPATH = LD_LIBRARY_PATH=../libcap
DEPS = ../libcap/libcap.so
else
-LDSTATIC = --static
+ifeq ($(LIBCSTATIC),yes)
+LDFLAGS = --static
DEPS = ../libcap/libcap.a
+else
+# For this build variant override the LDFLAGS to link statically from
+# libraries within the build tree. If you never want this, use make
+# DYNAMIC=yes . Note, we can't reliably link statically against glibc
+# becasuse of https://sourceware.org/bugzilla/show_bug.cgi?id=12491 .
+LDFLAGS = -Wl,-Bstatic
+LDFLAGS_SUFFIX = -Wl,-Bdynamic
+DEPS = ../libcap/libcap.a
+endif
endif
../libcap/libcap.a:
- make -C ../libcap libcap.a
+ $(MAKE) -C ../libcap libcap.a
../libcap/libcap.so:
- make -C ../libcap libcap.so
+ $(MAKE) -C ../libcap libcap.so
$(BUILD): %: %.o $(DEPS)
- $(CC) $(CFLAGS) -o $@ $< $(LIBCAPLIB) $(LDSTATIC)
+ $(CC) $(CFLAGS) $(LDFLAGS) $< $(LIBCAPLIB) $(LDFLAGS_SUFFIX) -o $@
%.o: %.c $(INCS)
- $(CC) $(IPATH) $(CFLAGS) -c $< -o $@
+ $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
install: all
mkdir -p -m 0755 $(FAKEROOT)$(SBINDIR)
@@ -39,26 +49,29 @@ ifeq ($(RAISE_SETFCAP),yes)
$(FAKEROOT)$(SBINDIR)/setcap cap_setfcap=i $(FAKEROOT)$(SBINDIR)/setcap
endif
-test: $(PROGS) capsh
+test:
+ @echo "no program tests without privilege, try 'make sudotest'"
-capshdoc.h.cf: capshdoc.h ./mkcapshdoc.sh
+capshdoc.c.cf: capshdoc.c ./mkcapshdoc.sh
./mkcapshdoc.sh > $@
- diff -u capshdoc.h $@ || (rm $@ ; exit 1)
+ diff -u capshdoc.c $@ || (rm $@ ; exit 1)
-capsh: capsh.c capshdoc.h.cf $(DEPS)
- $(CC) $(IPATH) $(CAPSH_SHELL) $(CFLAGS) -o $@ $< $(LIBCAPLIB) $(LDSTATIC)
+capsh: capsh.c capshdoc.c.cf capshdoc.h $(DEPS)
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(CAPSH_SHELL) $(LDFLAGS) $< capshdoc.c $(LIBCAPLIB) $(LDFLAGS_SUFFIX) -o $@
-tcapsh-static: capsh.c capshdoc.h.cf $(DEPS)
- $(CC) $(IPATH) $(CAPSH_SHELL) $(CFLAGS) -o $@ $< $(LIBCAPLIB) --static
+# Statically linked with minimal linkage flags to enable running in a
+# chroot and in other in-tree testing contexts.
+tcapsh-static: capsh.c capshdoc.c.cf capshdoc.h $(DEPS)
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(CAPSH_SHELL) -o $@ $< capshdoc.c $(LIBCAPLIB) --static
uns_test: ../tests/uns_test.c
$(MAKE) -C ../tests uns_test
cp ../tests/uns_test .
-sudotest: test tcapsh-static uns_test
- sudo $(LDPATH) ./quicktest.sh
+sudotest: tcapsh-static uns_test capsh setcap getcap getpcaps tcapsh-static
+ $(SUDO) $(LDPATH) ./quicktest.sh
clean:
$(LOCALCLEAN)
rm -f *.o $(BUILD) privileged ping hack.sh compare-cap uns_test
- rm -f capsh tcapsh* capshdoc.h.cf
+ rm -f capsh tcapsh* capshdoc.*.cf