Link with libatomic
On Debian we had to inject -latomic
on some architectures, since it uses 8 byte atomic operations. This requires linking to libatomic
on at least some architectures:
c++ -o src/libplacebo.so.157 src/libplacebo.so.157.p/meson-generated_.._utils_gen.c.o src/libplacebo.so.157.p/colorspace.c.o src/libplacebo.so.157.p/common.c.o src/libplacebo.so.157.p/dither.c.o src/libplacebo.so.157.p/dispatch.c.o src/libplacebo.so.157.p/dummy.c.o src/libplacebo.so.157.p/filters.c.o src/libplacebo.so.157.p/format.c.o src/libplacebo.so.157.p/glsl_spirv.c.o src/libplacebo.so.157.p/glsl_utils.c.o src/libplacebo.so.157.p/gpu.c.o src/libplacebo.so.157.p/log.c.o src/libplacebo.so.157.p/pl_alloc.c.o src/libplacebo.so.157.p/pl_string.c.o src/libplacebo.so.157.p/renderer.c.o src/libplacebo.so.157.p/siphash.c.o src/libplacebo.so.157.p/shaders.c.o src/libplacebo.so.157.p/shaders_av1.c.o src/libplacebo.so.157.p/shaders_colorspace.c.o src/libplacebo.so.157.p/shaders_custom.c.o src/libplacebo.so.157.p/shaders_lut.c.o src/libplacebo.so.157.p/shaders_sampling.c.o src/libplacebo.so.157.p/swapchain.c.o src/libplacebo.so.157.p/utils_frame_queue.c.o src/libplacebo.so.157.p/utils_upload.c.o src/libplacebo.so.157.p/shaders_icc.c.o src/libplacebo.so.157.p/glsl_glslang.cc.o src/libplacebo.so.157.p/glsl_spirv_glslang.c.o src/libplacebo.so.157.p/vulkan_command.c.o src/libplacebo.so.157.p/vulkan_context.c.o src/libplacebo.so.157.p/vulkan_formats.c.o src/libplacebo.so.157.p/vulkan_gpu.c.o src/libplacebo.so.157.p/vulkan_gpu_buf.c.o src/libplacebo.so.157.p/vulkan_gpu_tex.c.o src/libplacebo.so.157.p/vulkan_gpu_pass.c.o src/libplacebo.so.157.p/vulkan_malloc.c.o src/libplacebo.so.157.p/vulkan_swapchain.c.o src/libplacebo.so.157.p/vulkan_utils.c.o src/libplacebo.so.157.p/opengl_context.c.o src/libplacebo.so.157.p/opengl_formats.c.o src/libplacebo.so.157.p/opengl_gpu.c.o src/libplacebo.so.157.p/opengl_gpu_tex.c.o src/libplacebo.so.157.p/opengl_gpu_pass.c.o src/libplacebo.so.157.p/opengl_swapchain.c.o src/libplacebo.so.157.p/opengl_utils.c.o -Wl,--as-needed -Wl,--no-undefined -shared -fPIC -Wl,--start-group -Wl,-soname,libplacebo.so.157 -Wl,-z,relro -Wl,-z,now -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,--exclude-libs=ALL -lm -pthread /usr/lib/mipsel-linux-gnu/liblcms2.so -lglslang -lHLSL -lOGLCompiler -lOSDependent -lSPIRV -lSPVRemapper -lGenericCodeGen -lMachineIndependent -lSPIRV-Tools -lSPIRV-Tools-opt -lpthread /usr/lib/mipsel-linux-gnu/libvulkan.so /usr/lib/mipsel-linux-gnu/libepoxy.so -Wl,--end-group
/usr/bin/ld: src/libplacebo.so.157.p/pl_alloc.c.o: in function `pl_ref_new':
./obj-mipsel-linux-gnu/../src/pl_alloc.c:297: undefined reference to `__atomic_store_8'
/usr/bin/ld: ./obj-mipsel-linux-gnu/../src/pl_alloc.c:297: undefined reference to `__atomic_store_8'
/usr/bin/ld: src/libplacebo.so.157.p/pl_alloc.c.o: in function `pl_ref_dup':
./obj-mipsel-linux-gnu/../src/pl_alloc.c:306: undefined reference to `__atomic_fetch_add_8'
/usr/bin/ld: ./obj-mipsel-linux-gnu/../src/pl_alloc.c:306: undefined reference to `__atomic_fetch_add_8'
/usr/bin/ld: src/libplacebo.so.157.p/pl_alloc.c.o: in function `pl_ref_deref':
./obj-mipsel-linux-gnu/../src/pl_alloc.c:313: undefined reference to `__atomic_fetch_sub_8'
/usr/bin/ld: ./obj-mipsel-linux-gnu/../src/pl_alloc.c:316: undefined reference to `__atomic_fetch_sub_8'
/usr/bin/ld: src/libplacebo.so.157.p/vulkan_gpu.c.o: in function `vk_sync_create':
./obj-mipsel-linux-gnu/../src/vulkan/gpu.c:617: undefined reference to `__atomic_store_8'
/usr/bin/ld: ./obj-mipsel-linux-gnu/../src/vulkan/gpu.c:617: undefined reference to `__atomic_store_8'
/usr/bin/ld: src/libplacebo.so.157.p/vulkan_gpu.c.o: in function `vk_sync_deref':
./obj-mipsel-linux-gnu/../src/vulkan/gpu.c:604: undefined reference to `__atomic_fetch_sub_8'
/usr/bin/ld: ./obj-mipsel-linux-gnu/../src/vulkan/gpu.c:604: undefined reference to `__atomic_fetch_sub_8'
/usr/bin/ld: src/libplacebo.so.157.p/vulkan_gpu_buf.c.o: in function `vk_buf_deref':
./obj-mipsel-linux-gnu/../src/vulkan/gpu_buf.c:154: undefined reference to `__atomic_fetch_sub_8'
/usr/bin/ld: ./obj-mipsel-linux-gnu/../src/vulkan/gpu_buf.c:154: undefined reference to `__atomic_fetch_sub_8'
/usr/bin/ld: src/libplacebo.so.157.p/vulkan_gpu_buf.c.o: in function `vk_buf_barrier':
./obj-mipsel-linux-gnu/../src/vulkan/gpu_buf.c:36: undefined reference to `__atomic_fetch_add_8'
/usr/bin/ld: ./obj-mipsel-linux-gnu/../src/vulkan/gpu_buf.c:36: undefined reference to `__atomic_fetch_add_8'
/usr/bin/ld: src/libplacebo.so.157.p/vulkan_gpu_buf.c.o: in function `vk_buf_poll':
./obj-mipsel-linux-gnu/../src/vulkan/gpu_buf.c:380: undefined reference to `__atomic_load_8'
/usr/bin/ld: ./obj-mipsel-linux-gnu/../src/vulkan/gpu_buf.c:380: undefined reference to `__atomic_load_8'
/usr/bin/ld: ./obj-mipsel-linux-gnu/../src/vulkan/gpu_buf.c:390: undefined reference to `__atomic_load_8'
/usr/bin/ld: ./obj-mipsel-linux-gnu/../src/vulkan/gpu_buf.c:390: undefined reference to `__atomic_load_8'
/usr/bin/ld: src/libplacebo.so.157.p/vulkan_gpu_buf.c.o: in function `vk_buf_create':
./obj-mipsel-linux-gnu/../src/vulkan/gpu_buf.c:173: undefined reference to `__atomic_store_8'
/usr/bin/ld: ./obj-mipsel-linux-gnu/../src/vulkan/gpu_buf.c:173: undefined reference to `__atomic_store_8'
/usr/bin/ld: src/libplacebo.so.157.p/vulkan_gpu_tex.c.o: in function `vk_init_image':
./obj-mipsel-linux-gnu/../src/vulkan/gpu_tex.c:162: undefined reference to `__atomic_store_8'
/usr/bin/ld: ./obj-mipsel-linux-gnu/../src/vulkan/gpu_tex.c:162: undefined reference to `__atomic_store_8'
/usr/bin/ld: src/libplacebo.so.157.p/vulkan_gpu_tex.c.o: in function `vk_tex_deref':
./obj-mipsel-linux-gnu/../src/vulkan/gpu_tex.c:146: undefined reference to `__atomic_fetch_sub_8'
/usr/bin/ld: ./obj-mipsel-linux-gnu/../src/vulkan/gpu_tex.c:146: undefined reference to `__atomic_fetch_sub_8'
/usr/bin/ld: src/libplacebo.so.157.p/vulkan_gpu_tex.c.o: in function `vk_tex_barrier':
./obj-mipsel-linux-gnu/../src/vulkan/gpu_tex.c:27: undefined reference to `__atomic_fetch_add_8'
/usr/bin/ld: ./obj-mipsel-linux-gnu/../src/vulkan/gpu_tex.c:27: undefined reference to `__atomic_fetch_add_8'
/usr/bin/ld: src/libplacebo.so.157.p/vulkan_gpu_tex.c.o: in function `vk_tex_poll':
./obj-mipsel-linux-gnu/../src/vulkan/gpu_tex.c:1024: undefined reference to `__atomic_load_8'
/usr/bin/ld: ./obj-mipsel-linux-gnu/../src/vulkan/gpu_tex.c:1024: undefined reference to `__atomic_load_8'
/usr/bin/ld: ./obj-mipsel-linux-gnu/../src/vulkan/gpu_tex.c:1034: undefined reference to `__atomic_load_8'
/usr/bin/ld: ./obj-mipsel-linux-gnu/../src/vulkan/gpu_tex.c:1034: undefined reference to `__atomic_load_8'
/usr/bin/ld: src/libplacebo.so.157.p/vulkan_gpu_tex.c.o: in function `vk_tex_export':
./obj-mipsel-linux-gnu/../src/vulkan/gpu_tex.c:1059: undefined reference to `__atomic_fetch_add_8'
/usr/bin/ld: ./obj-mipsel-linux-gnu/../src/vulkan/gpu_tex.c:1059: undefined reference to `__atomic_fetch_add_8'
collect2: error: ld returned 1 exit status
See medialibrary#411 (closed) for some discussion on the same issue.