
We recently moved glib detection code to meson but this changes the linker command line from -lglib-2.0 to using a path to libglib-2.0.so. This does not work for static linking, which is used by stress.c: $ make V=1 tests/migration/initrd-stress.img cc -m64 -mcx16 -o tests/migration/stress ... -static -Wl,--start-group /usr/lib64/libglib-2.0.so -Wl,--end-group ... bin/ld: attempted static link of dynamic object `/usr/lib64/libglib-2.0.so' Add a specific dependency for stress.c, which is linked statically. The compiler command line is now: cc -m64 -mcx16 -o tests/migration/stress ... -static -pthread -Wl,--start-group -lm /usr/lib64/libpcre.a -lglib-2.0 -Wl,--end-group Fixes: fc9a809e0d ("build: move glib detection and workarounds to meson") Signed-off-by: Fabiano Rosas <farosas@suse.de> Message-Id: <20230525212044.30222-3-farosas@suse.de> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
19 lines
505 B
Meson
19 lines
505 B
Meson
sysprof = dependency('sysprof-capture-4', required: false)
|
|
glib_static = dependency('glib-2.0', version: glib_req_ver, required: false,
|
|
method: 'pkg-config', static: true)
|
|
|
|
stress = executable(
|
|
'stress',
|
|
files('stress.c'),
|
|
dependencies: [glib_static, sysprof],
|
|
link_args: ['-static'],
|
|
build_by_default: false,
|
|
)
|
|
|
|
custom_target(
|
|
'initrd-stress.img',
|
|
output: 'initrd-stress.img',
|
|
input: stress,
|
|
command: [find_program('initrd-stress.sh'), '@OUTPUT@', '@INPUT@']
|
|
)
|