Message ID | 20220430102859.1769397-1-y.karadz@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [v2] trace-cruncher: Build trace-obj-debug.c as library | expand |
On Sat, Apr 30, 2022 at 1:29 PM Yordan Karadzhov (VMware) <y.karadz@gmail.com> 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@gmail.com> > --- > > This patch applies on top of the patch: > https://lore.kernel.org/all/20220420080206.252356-2-tz.stoyanov@gmail.com/ > > 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 >
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 +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',
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@gmail.com> --- This patch applies on top of the patch: https://lore.kernel.org/all/20220420080206.252356-2-tz.stoyanov@gmail.com/ 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(-)