media-autobuild_suite icon indicating copy to clipboard operation
media-autobuild_suite copied to clipboard

FFMPEG build fails: "libplacebo >= 4.192.0 not found using pkg-config"

Open nivomi opened this issue 1 year ago • 19 comments

logs.zip

nivomi avatar Mar 12 '23 19:03 nivomi

Similar ticket https://github.com/m-ab-s/media-autobuild_suite/issues/2324

Murmur avatar Mar 13 '23 18:03 Murmur

Same problem. logs.zip

kliffgomel avatar Mar 20 '23 16:03 kliffgomel

Unfortunately, the same.

dmki avatar Mar 23 '23 09:03 dmki

Are there any updates to this at all? I ran the suite today and I'm still getting the error.

ENunn avatar Mar 28 '23 18:03 ENunn

Compiling with clang runs without errors...

kliffgomel avatar Apr 02 '23 07:04 kliffgomel

Didn't work for me. logs.zip

dmki avatar Apr 06 '23 12:04 dmki

And how to compile with Clang? MSYS only uses GCC in this suite.

fzold avatar Apr 06 '23 17:04 fzold

I assume he means choosing CLang in initial dialog, or changing CC value in media-autobuild_suite.ini file. But it doesn't affect the result.

dmki avatar Apr 08 '23 11:04 dmki

Yeah, switch to clang didn't fix the problem.

L4cache avatar Apr 10 '23 19:04 L4cache

I'm able to build ffmpeg with libplacebo without errors if the build is done by clang . ffmpeg version N-110229-g9919dd102f-g4dffa564d1+1 Copyright (c) 2000-2023 the FFmpeg developers built with clang version 16.0.1 configuration: --pkg-config=pkgconf --cc='ccache clang' --cxx='ccache clang++' --ld='ccache clang++' --extra-cxxflags=-fpermissive --extra-cflags=-Wno-int-conversion --enable-bzlib --enable-d3d11va --enable-dxva2 --enable-iconv --enable-lzma --enable-zlib --enable-sdl2 --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libdav1d --enable-libaom --disable-debug --enable-libfdk-aac --enable-fontconfig --enable-libass --enable-libbluray --enable-libfreetype --enable-libmfx --enable-libopenjpeg --enable-libwebp --enable-libxml2 --enable-libzimg --enable-gpl --enable-avisynth --enable-libopenmpt --enable-libvmaf --enable-frei0r --enable-libcaca --enable-libfribidi --enable-libilbc --enable-libmodplug --enable-librist --enable-librtmp --enable-libglslang --enable-vulkan --enable-libplacebo --enable-opencl --enable-opengl --enable-gnutls --extra-cflags=-DCACA_STATIC --extra-cflags=-DMODPLUG_STATIC --extra-libs=-lpsapi --extra-cflags=-DLIBXML_STATIC --disable-w32threads --enable-nonfree libavutil 58. 6.100 / 58. 6.100 libavcodec 60. 9.100 / 60. 9.100 libavformat 60. 4.101 / 60. 4.101 libavdevice 60. 2.100 / 60. 2.100 libavfilter 9. 5.100 / 9. 5.100 libswscale 7. 2.100 / 7. 2.100 libswresample 4. 11.100 / 4. 11.100 libpostproc 57. 2.100 / 57. 2.100

logs.zip

kliffgomel avatar Apr 11 '23 14:04 kliffgomel

I'm able to build ffmpeg with libplacebo without errors if the build is done by clang .

Could you please share your media-autobuild_suite.ini? It contains the answers to initial questions. I can't quite notice what else is different between my config and yours that makes it fail in my machine.

dmki avatar Apr 11 '23 16:04 dmki

Normal settings, only the clang compiler is selected. CC=1 Ccache=2 FfmpegChoice=1 In ffmpeg_options.txt enabled libplacebo

kliffgomel avatar Apr 12 '23 04:04 kliffgomel

Thank you. It worked. 👍

fzold avatar Apr 12 '23 06:04 fzold

"Fixes" one problem, introduces another. CLang can't build xavs2.

dmki avatar Apr 12 '23 07:04 dmki

It seems that xavs2 is not maintained anymore. See the last commit in 2019 https://github.com/pkuvcl/xavs2

Biswa96 avatar Apr 12 '23 11:04 Biswa96

It seems that xavs2 is not maintained anymore. See the last commit in 2019 https://github.com/pkuvcl/xavs2

Yes, but even disabling it with --disable-xavs2 doesn't do anything - it tries to download and build it. And fails.

dmki avatar Apr 12 '23 16:04 dmki

OK, now it works for me too. One trick, build xavs2 with gcc, then switch to clang. To compile only certain program you'll need to edit the ini file and remove all --enable-* options from ffmpeg_options. Example: mabs-config.zip This is for x265.

L4cache avatar Apr 15 '23 04:04 L4cache

The xavs2 build issue with clang was fixed.

Biswa96 avatar Apr 15 '23 04:04 Biswa96

Ran into this when I was cross-compiling ffmpeg but using another mingw environment (not this project), so I checked the config.log of ffmpeg and saw:

pkgconf --exists --print-errors libplacebo
check_func_headers libplacebo/vulkan.h pl_vulkan_create -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include/spirv_cross -L/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/lib -lplacebo -lm -lshlwapi -lversion -lshaderc_combined -lspirv-cross-c-shared -lvulkan -lshlwapi -lcfgmgr32 -llcms2 -lm -lpthread -ldovi -ladvapi32 -luserenv -lkernel32 -lws2_32 -lbcrypt -lkernel32 -ladvapi32 -luserenv -lkernel32 -lkernel32 -lws2_32 -lbcrypt
test_ld cc -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include/spirv_cross -L/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/lib -lplacebo -lm -lshlwapi -lversion -lshaderc_combined -lspirv-cross-c-shared -lvulkan -lshlwapi -lcfgmgr32 -llcms2 -lm -lpthread -ldovi -ladvapi32 -luserenv -lkernel32 -lws2_32 -lbcrypt -lkernel32 -ladvapi32 -luserenv -lkernel32 -lkernel32 -lws2_32 -lbcrypt
test_cc -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include/spirv_cross -L/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/lib
BEGIN /tmp/ffconf.ZuVwjN4e/test.c
    1	#include <libplacebo/vulkan.h>
    2	#include <stdint.h>
    3	long check_pl_vulkan_create(void) { return (long) pl_vulkan_create; }
    4	int main(void) { int ret = 0;
    5	 ret |= ((intptr_t)check_pl_vulkan_create) & 0xFFFF;
    6	return ret; }
END /tmp/ffconf.ZuVwjN4e/test.c
x86_64-w64-mingw32-gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO=1 -D__printf__=__gnu_printf__ -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DPIC -std=c11 -fomit-frame-pointer -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include/freetype2 -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include/libpng16 -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include/harfbuzz -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include/fribidi -DFRIBIDI_LIB_STATIC -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include/freetype2 -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include/libpng16 -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include/bs2b -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include/fribidi -DFRIBIDI_LIB_STATIC -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include -DHWY_STATIC_DEFINE -DJXL_STATIC_DEFINE -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include -DJXL_THREADS_STATIC_DEFINE -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/lib/pkgconfig/../../include -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/lib/pkgconfig/../../include/vpl -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include -DMODPLUG_STATIC -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include/opus -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include/opus -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include/spirv_cross -L/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/lib -c -o /tmp/ffconf.ZuVwjN4e/test.o /tmp/ffconf.ZuVwjN4e/test.c
/tmp/ffconf.ZuVwjN4e/test.c: In function 'check_pl_vulkan_create':
/tmp/ffconf.ZuVwjN4e/test.c:3:44: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
    3 | long check_pl_vulkan_create(void) { return (long) pl_vulkan_create; }
      |                                            ^
x86_64-w64-mingw32-gcc -Wl,--nxcompat,--dynamicbase -Wl,--high-entropy-va -Wl,--as-needed -Wl,--image-base,0x140000000 -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include -I/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/include/spirv_cross -L/root/mpv-cross/mpv-winbuild-cmake/build64/install/mingw/lib -o /tmp/ffconf.ZuVwjN4e/test.exe /tmp/ffconf.ZuVwjN4e/test.o -lplacebo -lm -lshlwapi -lversion -lshaderc_combined -lspirv-cross-c-shared -lvulkan -lshlwapi -lcfgmgr32 -llcms2 -lm -lpthread -ldovi -ladvapi32 -luserenv -lkernel32 -lws2_32 -lbcrypt -lkernel32 -ladvapi32 -luserenv -lkernel32 -lkernel32 -lws2_32 -lbcrypt -lstdc++
/root/mpv-cross/mpv-winbuild-cmake/build64/install/lib/gcc/x86_64-w64-mingw32/12.2.1/../../../../x86_64-w64-mingw32/bin/ld: /tmp/ffconf.ZuVwjN4e/test.o:test.c:(.text+0x3): undefined reference to `__imp_pl_vulkan_create'
collect2: error: ld returned 1 exit status
ERROR: libplacebo not found using pkg-config

It seems like pkg-config can find libplacebo, but failed to build a test program referencing pl_vulkan_create API. Maybe relative to api: decorate all API functions with PL_API

Downgrade libplacebo to a tagged version instead of HEAD fix this for me.

Dixeran avatar Apr 25 '23 16:04 Dixeran