[libcamera-devel] [PATCH] src/libcamera/meson.build: link with atomic when needed

Kieran Bingham kieran.bingham at ideasonboard.com
Fri Sep 6 15:50:38 CEST 2019


Hi Fabrice,

Thank you for this patch,

On 05/09/2019 20:04, Fabrice Fontaine wrote:
> On some architectures, atomic binutils are provided by the libatomic
> library from gcc. Linking with libatomic is therefore necessary,
> otherwise the build fails with:
> 
> /home/buildroot/autobuild/run/instance-3/output/host/opt/ext-toolchain/bin/../lib/gcc/sparc-buildroot-linux-uclibc/7.4.0/../../../../sparc-buildroot-linux-uclibc/bin/ld: src/libcamera/4ab8042@@camera at sha/v4l2_videodevice.cpp.o: in function `libcamera::V4L2VideoDevice::queueBuffer(libcamera::Buffer*)':
> v4l2_videodevice.cpp:(.text+0x1470): undefined reference to `__atomic_fetch_add_4'
> 
> This is often for example the case on sparc v8 32 bits.
> 
> Fixes:
>  - http://autobuild.buildroot.org/results/1f0b8338f5f39aa86b9d432598dae2f53c5f7c84
> 
> 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 c5d8f11..0706a08 100644
> --- a/src/libcamera/meson.build
> +++ b/src/libcamera/meson.build
> @@ -99,6 +99,7 @@ version_cpp = vcs_tag(command : [gen_version, meson.build_root()],
>  libcamera_sources += version_cpp
>  
>  libcamera_deps = [
> +    cc.find_library('atomic', required: false),

Interestingly, this adds the following clear message when I build on x86:

Library atomic found: YES

So - my system finds 'libatomic' and now explicitly adds it as the
dependencies. (I assumed it was a gcc builtin, for it not to be necessary)

I wondered if this caused any ill-effect, but actually I believe this is
perfectly safe. Thanks to using meson we have reproducible builds, and I
can see that both with and without this explicit linking we get
identical output binaries for libcamera.so

With that, and seeing the libcamera tests pass (which is not surprising
with no binary change - I've ensured that the git sha1 did not change
between builds) then I believe this is a good fix to support the broken
compile issues reported.

Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

I'll give the others a chance to provide any feedback if necessary and
then we can push this into the master branch, and then get buildroot
package building the latest version.


>      cc.find_library('dl'),
>      libudev,
>      dependency('threads'),
> 

-- 
Regards
--
Kieran


More information about the libcamera-devel mailing list