tools: add -Dagent=true option

This also builds the agent statically with libsysprof_static_dep since
we'd need that to avoid installing libsysprof when that isn't wanted.
It also ensures the LD_PRELOAD libraries are installed for use by the
agent.
This commit is contained in:
Christian Hergert
2022-07-21 18:35:35 -07:00
parent dc829087d4
commit c3035efd52
4 changed files with 17 additions and 9 deletions

View File

@ -44,3 +44,7 @@ option('tests', type: 'boolean')
# Optionally disable the examples (this is mostly only useful for building only
# libsysprof-capture as a subproject)
option('examples', type: 'boolean')
# Optionally build the sysprof-agent tool to allow profiling inside of
# containers from external system
option('agent', type: 'boolean', description: 'Build the sysprof-agent utility')

View File

@ -166,6 +166,7 @@ libsysprof_static_dep = declare_dependency(
include_directories: [include_directories('.'), libsysprof_capture_include_dirs],
)
if get_option('libsysprof')
libsysprof = shared_library('sysprof-@0@'.format(libsysprof_api_version),
dependencies: libsysprof_deps + [libsysprof_static_dep],
install: true,
@ -191,5 +192,6 @@ pkgconfig.generate(
)
install_headers(libsysprof_public_headers, subdir: sysprof_header_subdir)
endif
subdir('preload')

View File

@ -58,7 +58,7 @@ subdir('libsysprof-capture')
if get_option('sysprofd') == 'bundled'
subdir('sysprofd')
endif
if get_option('libsysprof')
if get_option('libsysprof') or get_option('agent')
subdir('libsysprof')
endif
if get_option('gtk') and get_option('libsysprof')

View File

@ -12,14 +12,6 @@ if get_option('libsysprof')
install_dir: get_option('bindir'),
install: true,
)
sysprof_agent = executable('sysprof-agent',
['sysprof-agent.c', ipc_agent_src],
dependencies: [libsysprof_dep],
c_args: tools_cflags,
install_dir: get_option('bindir'),
install: true,
)
endif
sysprof_cat = executable('sysprof-cat', 'sysprof-cat.c',
@ -48,3 +40,13 @@ list_threads = executable('list-threads', ['list-threads.c'],
c_args: tools_cflags,
install: false,
)
if get_option('agent')
sysprof_agent = executable('sysprof-agent',
['sysprof-agent.c', ipc_agent_src],
dependencies: [libsysprof_static_dep],
c_args: tools_cflags,
install_dir: get_option('bindir'),
install: true,
)
endif