[libcamera-devel] [PATCH] libcamera: add dependencies to libcamera_dep

Laurent Pinchart laurent.pinchart at ideasonboard.com
Wed Jun 2 02:59:05 CEST 2021


Hi Fabrice,

Thank you for the patch.

On Tue, Jun 01, 2021 at 10:51:54PM +0200, Fabrice Fontaine wrote:
> Add dependencies to libcamera_dep to avoid the following build failure
> with qcam on sparc v8 which is raised since commit
> a8310248fc26cc1e1b791af5e9394c1d20bee269:
> 
> FAILED: src/qcam/qcam
> /srv/storage/autobuild/run/instance-0/output-1/host/bin/sparc-linux-g++  -o src/qcam/qcam src/qcam/qcam.p/meson-generated_.._qt5-feathericons_qrc.cpp.o src/qcam/qcam.p/meson-generated_moc_main_window.cpp.o src/qcam/qcam.p/meson-generated_moc_viewfinder_qt.cpp.o src/qcam/qcam.p/.._cam_options.cpp.o src/qcam/qcam.p/.._cam_stream_options.cpp.o src/qcam/qcam.p/format_converter.cpp.o src/qcam/qcam.p/main.cpp.o src/qcam/qcam.p/main_window.cpp.o src/qcam/qcam.p/message_handler.cpp.o src/qcam/qcam.p/viewfinder_qt.cpp.o src/qcam/qcam.p/dng_writer.cpp.o -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -Wshadow -include config.h '-Wl,-rpath,$ORIGIN/../libcamera' -Wl,-rpath-link,/srv/storage/autobuild/run/instance-0/output-1/build/libcamera-3a1f67a8031ac5ad96a11d5dc8b2e8976290497b/build/src/libcamera -Wl,--start-group src/libcamera/libcamera.so /srv/storage/autobuild/run/instance-0/output-1/host/sparc-buildroot-linux-uclibc/sysroot/usr/lib/libQt5Core.so /srv/storage/autobuild/run/instance-0/output-1/host/sparc-buildroot-linux-uclibc/sysroot/usr/lib/libQt5Gui.so /srv/storage/autobuild/run/instance-0/output-1/host/sparc-buildroot-linux-uclibc/sysroot/usr/lib/libQt5Widgets.so /srv/storage/autobuild/run/instance-0/output-1/host/sparc-buildroot-linux-uclibc/sysroot/usr/lib/libtiff.so -Wl,--end-group
> /srv/storage/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/sparc-buildroot-linux-uclibc/9.3.0/../../../../sparc-buildroot-linux-uclibc/bin/ld: src/qcam/qcam.p/main_window.cpp.o: undefined reference to symbol '__atomic_fetch_add_4@@LIBATOMIC_1.0'
> /srv/storage/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/sparc-buildroot-linux-uclibc/9.3.0/../../../../sparc-buildroot-linux-uclibc/bin/ld: /srv/storage/autobuild/run/instance-0/output-1/host/sparc-buildroot-linux-uclibc/sysroot/lib/libatomic.so.1: error adding symbols: DSO missing from command line

There's something that puzzles me, maybe you can enlighten me.

libcamera uses atomic operations internally, which, one some platforms,
require linking against libatomic. As a result, we add libatomic to
libcamera_deps (as an optional depedency), so libcamera.so is linked
against libatomic.so. So far, so good. Why do we need applications that
link against libcamera to also link against libatomic, if they don't use
atomic operations directly themselves ?

> Fixes:
>  - http://autobuild.buildroot.org/results/d0726b2253f1f3d006e057f3b32c646c4b9b5f7a
> 
> Signed-off-by: Fabrice Fontaine <fontaine.fabrice at gmail.com>
> ---
>  src/libcamera/meson.build | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build
> index cc2b8669..af3533ad 100644
> --- a/src/libcamera/meson.build
> +++ b/src/libcamera/meson.build
> @@ -160,6 +160,7 @@ libcamera_dep = declare_dependency(sources : [
>                                         libcamera_public_headers,
>                                     ],
>                                     include_directories : libcamera_includes,
> +                                   dependencies : libcamera_deps,
>                                     link_with : libcamera)
>  
>  subdir('proxy/worker')

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list