[PATCH 60/68] tools lib traceevent: Add version for traceevent shared object

From: Arnaldo Carvalho de Melo
Date: Tue Oct 11 2016 - 13:58:28 EST


From: Jiri Olsa <jolsa@xxxxxxxxxx>

Adding version support for libtraceevent.so object.

Using the existing EVENT_PARSE_VERSION variable to construct
the .so object version string, which now consists of:

$(EP_VERSION).$(EP_PATCHLEVEL).$(EP_EXTRAVERSION)

Looks like it was created for this purpose anyway.

The build will now produce following traeceevent libraries:

$ ll libtraceevent*
libtraceevent.a
libtraceevent.so -> libtraceevent.so.1.1.0
libtraceevent.so.1 -> libtraceevent.so.1.1.0
libtraceevent.so.1.1.0

Also the install target will carry them:

$ make DESTDIR=/tmp/krava prefix=/usr install
INSTALL trace_plugins
INSTALL libtraceevent.a
INSTALL libtraceevent.so.1.1.0

$ find /tmp/krava/ | xargs ls -l
...
/tmp/krava/usr/lib64:
total 572
libtraceevent.a
libtraceevent.so -> libtraceevent.so.1.1.0
libtraceevent.so.1 -> libtraceevent.so.1.1.0
libtraceevent.so.1.1.0
...

Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx>
Cc: Namhyung Kim <namhyung@xxxxxxxxxx>
Cc: Steven Rostedt <rostedt@xxxxxxxxxxx>
Link: http://lkml.kernel.org/n/tip-v64z62fh0dwt0ueie5usrnac@xxxxxxxxxxxxxx
Signed-off-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
---
tools/lib/traceevent/Makefile | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/tools/lib/traceevent/Makefile b/tools/lib/traceevent/Makefile
index 0d7e1725a0f8..c76012ebdb9c 100644
--- a/tools/lib/traceevent/Makefile
+++ b/tools/lib/traceevent/Makefile
@@ -99,8 +99,6 @@ libdir_SQ = $(subst ','\'',$(libdir))
libdir_relative_SQ = $(subst ','\'',$(libdir_relative))
plugin_dir_SQ = $(subst ','\'',$(plugin_dir))

-LIB_TARGET = libtraceevent.a libtraceevent.so
-
CONFIG_INCLUDES =
CONFIG_LIBS =
CONFIG_FLAGS =
@@ -114,6 +112,9 @@ N =

EVENT_PARSE_VERSION = $(EP_VERSION).$(EP_PATCHLEVEL).$(EP_EXTRAVERSION)

+LIB_TARGET = libtraceevent.a libtraceevent.so.$(EVENT_PARSE_VERSION)
+LIB_INSTALL = libtraceevent.a libtraceevent.so*
+
INCLUDES = -I. -I $(srctree)/tools/include $(CONFIG_INCLUDES)

# Set compile option CFLAGS
@@ -171,8 +172,10 @@ all_cmd: $(CMD_TARGETS)
$(TE_IN): force
$(Q)$(MAKE) $(build)=libtraceevent

-$(OUTPUT)libtraceevent.so: $(TE_IN)
- $(QUIET_LINK)$(CC) --shared $^ -o $@
+$(OUTPUT)libtraceevent.so.$(EVENT_PARSE_VERSION): $(TE_IN)
+ $(QUIET_LINK)$(CC) --shared $^ -Wl,-soname,libtraceevent.so.$(EP_VERSION) -o $@
+ @ln -sf $(@F) $(OUTPUT)libtraceevent.so
+ @ln -sf $(@F) $(OUTPUT)libtraceevent.so.$(EP_VERSION)

$(OUTPUT)libtraceevent.a: $(TE_IN)
$(QUIET_LINK)$(RM) $@; $(AR) rcs $@ $^
@@ -262,7 +265,8 @@ endef

install_lib: all_cmd install_plugins
$(call QUIET_INSTALL, $(LIB_TARGET)) \
- $(call do_install,$(LIB_TARGET),$(libdir_SQ))
+ $(call do_install_mkdir,$(libdir_SQ)); \
+ cp -fpR $(LIB_INSTALL) $(DESTDIR)$(libdir_SQ)

install_plugins: $(PLUGINS)
$(call QUIET_INSTALL, trace_plugins) \
--
2.7.4