Jan 22, 2024, 22:19 by mar...@martin.st: > On Mon, 22 Jan 2024, Lynne wrote: > >> Jan 22, 2024, 07:52 by ffmpeg-devel@ffmpeg.org: >> >>> Since glslang 14.0.0, OGLCompiler and HLSL stub libraries have been >>> fully removed from the build. >>> >>> This fixes the configuration by detecting if the stub libraries are >>> still present (glslang releases before version 14.0.0). >>> >>> ffbuild/config.log: >>> /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: >>> cannot find -lOSDependent: No such file or directory >>> /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: >>> cannot find -lHLSL: No such file or directory >>> /usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: >>> cannot find -lOGLCompiler: No such file or directory >>> >>> Addresses https://trac.ffmpeg.org/ticket/10713 >>> See https://bugs.gentoo.org/show_bug.cgi?id=918989 >>> Should fix https://ffmpeg.org/pipermail/ffmpeg-devel/2023-August/313666.html >>> >>> Signed-off-by: Matthew White <mehw.is...@inventati.org> >>> --- >>> configure | 23 +++++++++++++++++++++-- >>> 1 file changed, 21 insertions(+), 2 deletions(-) >>> >>> diff --git a/configure b/configure >>> index c8ae0a061d..abff488dc0 100755 >>> --- a/configure >>> +++ b/configure >>> @@ -2626,6 +2626,7 @@ CMDLINE_SET=" >>> ignore_tests >>> install >>> ld >>> + libglslang_ldflags >>> ln_s >>> logfile >>> malloc_prefix >>> @@ -6652,6 +6653,24 @@ if enabled_all libglslang libshaderc; then >>> die "ERROR: libshaderc and libglslang are mutually exclusive, if in doubt, >>> disable libglslang" >>> fi >>> >>> +if enabled libglslang; then >>> + if [ -x "$(command -v glslang)" ]; then >>> + # https://github.com/KhronosGroup/glslang >>> + # commit 6be56e45e574b375d759b89dad35f780bbd4792f: Remove >>> `OGLCompiler` and `HLSL` stub libraries from build >>> + # StandAlone/StandAlone.cpp: >>> "SpirvGeneratorVersion:GLSLANG_VERSION_MAJOR.GLSLANG_VERSION_MINOR.GLSLANG_VERSION_PATCH >>> GLSLANG_VERSION_FLAVOR" >>> + glslang_version="$(glslang -dumpversion)" >>> + glslang_major="${glslang_version%%.*}" >>> + glslang_major="${glslang_major#*:}" >>> + if test ${glslang_major} -le 13; then >>> + libglslang_ldflags=" -lOSDependent -lHLSL -lOGLCompiler" >>> + elif ! [[ ${glslang_major} =~ ^[0-9]+$ ]]; then >>> + die "ERROR: glslang's computed major version isn't a number: >>> '${glslang_major}'" >>> + fi >>> + else >>> + die "ERROR: glslang binary not found, impossible to determine >>> installed glslang's version" >>> + fi >>> +fi >>> + >>> check_cpp_condition winrt windows.h >>> "!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)" >>> >>> if ! disabled w32threads && ! enabled pthreads; then >>> @@ -6771,10 +6790,10 @@ enabled libfreetype && require_pkg_config >>> libfreetype freetype2 "ft2build. >>> enabled libfribidi && require_pkg_config libfribidi fribidi >>> fribidi.h fribidi_version_info >>> enabled libharfbuzz && require_pkg_config libharfbuzz harfbuzz hb.h >>> hb_buffer_create >>> enabled libglslang && { check_lib spirv_compiler >>> glslang/Include/glslang_c_interface.h glslang_initialize_process \ >>> - -lglslang -lMachineIndependent -lOSDependent >>> -lHLSL -lOGLCompiler -lGenericCodeGen \ >>> + -lglslang -lMachineIndependent >>> "${libglslang_ldflags}" -lGenericCodeGen \ >>> -lSPVRemapper -lSPIRV -lSPIRV-Tools-opt -lSPIRV-Tools -lpthread -lstdc++ >>> -lm || >>> require spirv_compiler glslang/Include/glslang_c_interface.h >>> glslang_initialize_process \ >>> - -lglslang -lOSDependent -lHLSL -lOGLCompiler \ >>> + -lglslang "${libglslang_ldflags}" \ >>> -lSPVRemapper -lSPIRV -lSPIRV-Tools-opt -lSPIRV-Tools -lpthread -lstdc++ >>> -lm; } >>> enabled libgme && { check_pkg_config libgme libgme gme/gme.h >>> gme_new_emu || >>> require libgme gme/gme.h gme_new_emu -lgme -lstdc++; } >>> -- >>> 2.43.0 >>> >> >> This is very very cursed. Fitting for the public API of the world's fifth >> worst library. Debian is stuck on version 13, so the majority of users are >> still stuck on version 13. Debian ships a pkg-config file, but of course >> it's incorrect, if you try to compile against it. Oh, and libshaderc in >> Debian ships with a bug such that it segfaults on init, so it's not like you >> can avoid that. And that package's pkg-config file got broken in the past. >> >> I think this is fine for now. I'll let it be discussed for a few more days >> before merging it. >> > > I think breaking cross compilation with glslang is pretty bad. Apparently VLC > doesn't enable glslang in their ffmpeg builds though, but I would expect that > some does. > > Wouldn't it just be possible to test whether linkins succeeds with one set of > libraries, and if not, try with the other set, and pick whichever set works > with the library at hand? That would be way much simpler than this patch, and > also work for cross compilation. >
Debian has updated its version of glslang, so I'm more inclined to just depend on version 14 and hope the next time they break the API happens in less than a year, or however much that is in hours for them. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".