On Sat, Apr 30, 2022 at 1:29 PM Yordan Karadzhov (VMware) <y.karadz@xxxxxxxxx> wrote: > > The code for resolving virtual address to function name gets build > as shared library. The library is installed as package data. Later > this library can be used by the different sub-modules of tracecruncher. > > Signed-off-by: Yordan Karadzhov (VMware) <y.karadz@xxxxxxxxx> > --- > > This patch applies on top of the patch: > https://lore.kernel.org/all/20220420080206.252356-2-tz.stoyanov@xxxxxxxxx/ > > Changes in v2: > - Fixing the problem of '$ORIGIN' not being properly added to > the 'RUNPATH' of the shared libraries, built by the sub-modules. > > Makefile | 24 +++++++++++++++++++++--- > setup.py | 4 ++-- > 2 files changed, 23 insertions(+), 5 deletions(-) > > diff --git a/Makefile b/Makefile > index 52428c0..9b62c4a 100644 > --- a/Makefile > +++ b/Makefile > @@ -13,13 +13,31 @@ NC := '\e[0m' > > DOCDIR = ./docs > > -all: > +CC = gcc > +CFLAGS = -fPIC -Wall -Wextra -O2 -g > +LDFLAGS = -shared > +RM = rm -rf > + > +DBG_LIB = tracecruncher/libobjdebug.so Having an internal library to share and reuse code is very useful. It can be used for a lot of common code, not only for bfd wrappers. Please, can you change the name of the library to be more common? I would suggest libtccommon.so, libtcbase.so or something like that. Thanks! > +PY_SETUP = setup > + > +DBG_SRCS = src/trace-obj-debug.c > +DBG_OBJS = src/trace-obj-debug.o > + > +all: $(DBG_LIB) $(PY_SETUP) > @ echo ${CYAN}Buildinging trace-cruncher:${NC}; > + > +$(PY_SETUP): > python3 setup.py build > > +$(DBG_LIB): $(DBG_OBJS) > + $(CC) ${LDFLAGS} -o $@ $^ -L./tracecruncher -lbfd > + > clean: > - rm -f src/npdatawrapper.c > - rm -rf build > + ${RM} src/npdatawrapper.c > + ${RM} $(DBG_LIB) > + ${RM} src/*.o > + ${RM} build > > install: > @ echo ${CYAN}Installing trace-cruncher:${NC}; > diff --git a/setup.py b/setup.py > index 58561cf..d9e296b 100644 > --- a/setup.py > +++ b/setup.py > @@ -37,7 +37,7 @@ def add_library(lib, min_version, > libs_found.extend([(lib, lib_version)]) > > def third_party_paths(): > - library_dirs = [] > + library_dirs = ['$ORIGIN', 'tracecruncher'] > include_dirs = [np.get_include()] > libs_required = [('libtraceevent', '1.5.0'), > ('libtracefs', '1.3.0'), > @@ -61,7 +61,6 @@ include_dirs, library_dirs = third_party_paths() > > def extension(name, sources, libraries): > runtime_library_dirs = library_dirs > - runtime_library_dirs.extend('$ORIGIN') > return Extension(name, sources=sources, > include_dirs=include_dirs, > library_dirs=library_dirs, > @@ -91,6 +90,7 @@ def main(): > url='https://github.com/vmware/trace-cruncher', > license='LGPL-2.1', > packages=find_packages(), > + package_data={'tracecruncher': ['libobjdebug.so']}, > ext_modules=[module_ft, module_data, module_ks], > classifiers=[ > 'Development Status :: 4 - Beta', > -- > 2.32.0 > -- Tzvetomir (Ceco) Stoyanov VMware Open Source Technology Center