From db1adc86580361e6acda632515756df0f0528e70 Mon Sep 17 00:00:00 2001 From: Andrey Ignatov Date: Tue, 2 Apr 2019 18:07:41 -0700 Subject: [PATCH] Add symlinks for DSO Add symlinks with version suffix in a way similar to how it's done in kernel tree. The differences with kernel tree version: * LIBS is used to handle both files and targets w/o separation; * Version symlink is created in corresponding target as opposed to do everything in libbpf.so.$(LIBBPF_VERSION). Example: % OBJDIR=build DESTDIR=root make install ... % find root/ ! -type d -exec ls -l {} + -rw-r--r--. 1 rdna users 6046 Apr 2 18:09 root/usr/include/bpf/bpf.h -rw-r--r--. 1 rdna users 3485 Apr 2 18:09 root/usr/include/bpf/btf.h -rw-r--r--. 1 rdna users 16454 Apr 2 18:09 root/usr/include/bpf/libbpf.h -rw-r--r--. 1 rdna users 602030 Apr 2 18:09 root/usr/lib64/libbpf.a lrwxrwxrwx. 1 rdna users 11 Apr 2 18:09 root/usr/lib64/libbpf.so -> libbpf.so.0 lrwxrwxrwx. 1 rdna users 15 Apr 2 18:09 root/usr/lib64/libbpf.so.0 -> libbpf.so.0.0.2 -rwxr-xr-x. 1 rdna users 377640 Apr 2 18:09 root/usr/lib64/libbpf.so.0.0.2 -rw-r--r--. 1 rdna users 241 Apr 2 18:09 root/usr/lib64/pkgconfig/libbpf.pc Signed-off-by: Andrey Ignatov --- src/Makefile | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/Makefile b/src/Makefile index 9bd670d..1014ce3 100644 --- a/src/Makefile +++ b/src/Makefile @@ -38,7 +38,9 @@ OBJS := $(addprefix $(OBJDIR)/,bpf.o btf.o libbpf.o libbpf_errno.o netlink.o \ LIBS := $(OBJDIR)/libbpf.a ifndef BUILD_STATIC_ONLY - LIBS += $(OBJDIR)/libbpf.so + LIBS += $(OBJDIR)/libbpf.so \ + $(OBJDIR)/libbpf.so.$(VERSION) \ + $(OBJDIR)/libbpf.so.$(LIBBPF_VERSION) VERSION_SCRIPT := libbpf.map endif @@ -68,7 +70,13 @@ all: $(LIBS) $(PC_FILE) $(OBJDIR)/libbpf.a: $(OBJS) $(AR) rcs $@ $^ -$(OBJDIR)/libbpf.so: $(OBJS) +$(OBJDIR)/libbpf.so: $(OBJDIR)/libbpf.so.$(VERSION) + ln -sf $(^F) $@ + +$(OBJDIR)/libbpf.so.$(VERSION): $(OBJDIR)/libbpf.so.$(LIBBPF_VERSION) + ln -sf $(^F) $@ + +$(OBJDIR)/libbpf.so.$(LIBBPF_VERSION): $(OBJS) $(CC) -shared $(ALL_LDFLAGS) -Wl,--version-script=$(VERSION_SCRIPT) \ $^ -o $@ @@ -88,8 +96,16 @@ define do_install $(INSTALL) $1 $(if $3,-m $3,) '$(DESTDIR)$2' endef +# Preserve symlinks at installation. +define do_s_install + if [ ! -d '$(DESTDIR)$2' ]; then \ + $(INSTALL) -d -m 755 '$(DESTDIR)$2'; \ + fi; \ + cp -fpR $1 '$(DESTDIR)$2' +endef + install: all install_headers install_pkgconfig - $(call do_install,$(LIBS),$(LIBDIR)) + $(call do_s_install,$(LIBS),$(LIBDIR)) install_headers: $(call do_install,$(HEADERS),$(INCLUDEDIR)/bpf,644) @@ -103,4 +119,4 @@ install_pkgconfig: $(PC_FILE) $(call do_install,$(PC_FILE),$(LIBDIR)/pkgconfig,644) clean: - rm -f *.o *.a *.so *.pc + rm -f *.o *.a *.so *.so.* *.pc