makefile: add quiet mode support
Add quiet-by-default mode to Makefile, similar to libbpf Makefile in Linux
repo.
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
diff --git a/src/Makefile b/src/Makefile
index 31c5fd9..e81523e 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1,5 +1,13 @@
# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
+ifeq ($(V),1)
+ Q =
+ msg =
+else
+ Q = @
+ msg = @printf ' %-8s %s%s\n' "$(1)" "$(notdir $(2))" "$(if $(3), $(3))";
+endif
+
LIBBPF_VERSION := $(shell \
grep -oE '^LIBBPF_([0-9.]+)' libbpf.map | \
sort -rV | head -n1 | cut -d'_' -f2)
@@ -68,50 +76,54 @@
all: $(STATIC_LIBS) $(SHARED_LIBS) $(PC_FILE)
$(OBJDIR)/libbpf.a: $(STATIC_OBJS)
- $(AR) rcs $@ $^
+ $(call msg,AR,$@)
+ $(Q)$(AR) rcs $@ $^
$(OBJDIR)/libbpf.so: $(OBJDIR)/libbpf.so.$(LIBBPF_MAJOR_VERSION)
- ln -sf $(^F) $@
+ $(Q)ln -sf $(^F) $@
$(OBJDIR)/libbpf.so.$(LIBBPF_MAJOR_VERSION): $(OBJDIR)/libbpf.so.$(LIBBPF_VERSION)
- ln -sf $(^F) $@
+ $(Q)ln -sf $(^F) $@
$(OBJDIR)/libbpf.so.$(LIBBPF_VERSION): $(SHARED_OBJS)
- $(CC) -shared -Wl,--version-script=$(VERSION_SCRIPT) \
- -Wl,-soname,libbpf.so.$(LIBBPF_MAJOR_VERSION) \
- $^ $(ALL_LDFLAGS) -o $@
+ $(call msg,CC,$@)
+ $(Q)$(CC) -shared -Wl,--version-script=$(VERSION_SCRIPT) \
+ -Wl,-soname,libbpf.so.$(LIBBPF_MAJOR_VERSION) \
+ $^ $(ALL_LDFLAGS) -o $@
$(OBJDIR)/libbpf.pc:
- sed -e "s|@PREFIX@|$(PREFIX)|" \
+ $(Q)sed -e "s|@PREFIX@|$(PREFIX)|" \
-e "s|@LIBDIR@|$(LIBDIR)|" \
-e "s|@VERSION@|$(LIBBPF_VERSION)|" \
< libbpf.pc.template > $@
-$(STATIC_OBJDIR):
- mkdir -p $(STATIC_OBJDIR)
-
-$(SHARED_OBJDIR):
- mkdir -p $(SHARED_OBJDIR)
+$(STATIC_OBJDIR) $(SHARED_OBJDIR):
+ $(call msg,MKDIR,$@)
+ $(Q)mkdir -p $@
$(STATIC_OBJDIR)/%.o: %.c | $(STATIC_OBJDIR)
- $(CC) $(ALL_CFLAGS) $(CPPFLAGS) -c $< -o $@
+ $(call msg,CC,$@)
+ $(Q)$(CC) $(ALL_CFLAGS) $(CPPFLAGS) -c $< -o $@
$(SHARED_OBJDIR)/%.o: %.c | $(SHARED_OBJDIR)
- $(CC) $(ALL_CFLAGS) $(SHARED_CFLAGS) $(CPPFLAGS) -c $< -o $@
+ $(call msg,CC,$@)
+ $(Q)$(CC) $(ALL_CFLAGS) $(SHARED_CFLAGS) $(CPPFLAGS) -c $< -o $@
define do_install
- if [ ! -d '$(DESTDIR)$2' ]; then \
+ $(call msg,INSTALL,$1)
+ $(Q)if [ ! -d '$(DESTDIR)$2' ]; then \
$(INSTALL) -d -m 755 '$(DESTDIR)$2'; \
- fi; \
- $(INSTALL) $1 $(if $3,-m $3,) '$(DESTDIR)$2'
+ fi;
+ $(Q)$(INSTALL) $1 $(if $3,-m $3,) '$(DESTDIR)$2'
endef
# Preserve symlinks at installation.
define do_s_install
- if [ ! -d '$(DESTDIR)$2' ]; then \
+ $(call msg,INSTALL,$1)
+ $(Q)if [ ! -d '$(DESTDIR)$2' ]; then \
$(INSTALL) -d -m 755 '$(DESTDIR)$2'; \
- fi; \
- cp -fpR $1 '$(DESTDIR)$2'
+ fi;
+ $(Q)cp -fpR $1 '$(DESTDIR)$2'
endef
install: all install_headers install_pkgconfig
@@ -129,13 +141,16 @@
$(call do_install,$(PC_FILE),$(LIBDIR)/pkgconfig,644)
clean:
- rm -rf *.o *.a *.so *.so.* *.pc $(SHARED_OBJDIR) $(STATIC_OBJDIR)
+ $(call msg,CLEAN)
+ $(Q)rm -rf *.o *.a *.so *.so.* *.pc $(SHARED_OBJDIR) $(STATIC_OBJDIR)
.PHONY: cscope tags
cscope:
- ls *.c *.h > cscope.files
- cscope -b -q -f cscope.out
+ $(call msg,CSCOPE)
+ $(Q)ls *.c *.h > cscope.files
+ $(Q)cscope -b -q -f cscope.out
tags:
- rm -f TAGS tags
- ls *.c *.h | xargs $(TAGS_PROG) -a
+ $(call msg,CTAGS)
+ $(Q)rm -f TAGS tags
+ $(Q)ls *.c *.h | xargs $(TAGS_PROG) -a