haasn / libplacebo

Official mirror of libplacebo
http://libplacebo.org/
GNU Lesser General Public License v2.1
547 stars 69 forks source link

Build without vulkan fails #247

Closed warpme closed 7 months ago

warpme commented 7 months ago

Hi, I'm trying to build v6.338.2 on system without vulkan (i'm developing mmedia appliance and not building/disbled vulkan to minimize image size) Build for me fails like this:

../../gar.lib.mk:314: MESON configure will be invoked with: --buildtype=release -D vulkan="disabled" -D vk-proc-addr="disabled" -D vulkan-registry="disabled" -D demos="false"
DEPRECATION: "pkgconfig" entry is deprecated and should be replaced by "pkg-config"
The Meson build system
Version: 1.3.0
Source dir: /home/piotro/minimyth2-aarch64-next/script/lib/libplacebo/work/main.d/libplacebo-v6.338.2
Build dir: /home/piotro/minimyth2-aarch64-next/script/lib/libplacebo/work/main.d/libplacebo-v6.338.2/build
Build type: cross build
Project name: libplacebo
Project version: 6.338.2
C compiler for the host machine: //home/piotro/minimyth2-aarch64-next/images/build/usr/bin/aarch64-minimyth-linux-gnu-gcc (gcc 12.3.0 "aarch64-minimyth-linux-gnu-gcc (GCC) 12.3.0")
C linker for the host machine: //home/piotro/minimyth2-aarch64-next/images/build/usr/bin/aarch64-minimyth-linux-gnu-gcc ld.bfd 2.40
C++ compiler for the host machine: //home/piotro/minimyth2-aarch64-next/images/build/usr/bin/aarch64-minimyth-linux-gnu-g++ (gcc 12.3.0 "aarch64-minimyth-linux-gnu-g++ (GCC) 12.3.0")
C++ linker for the host machine: //home/piotro/minimyth2-aarch64-next/images/build/usr/bin/aarch64-minimyth-linux-gnu-g++ ld.bfd 2.40
C compiler for the build machine: cc (gcc 12.3.0 "cc (GCC) 12.3.0")
C linker for the build machine: cc ld.bfd 2.40
C++ compiler for the build machine: c++ (gcc 12.3.0 "c++ (GCC) 12.3.0")
C++ linker for the build machine: c++ ld.bfd 2.40
Build machine cpu family: x86_64
Build machine cpu: x86_64
Host machine cpu family: aarch64
Host machine cpu: aarch64
Target machine cpu family: aarch64
Target machine cpu: aarch64
Compiler for C supports arguments -Wincompatible-pointer-types: YES
Compiler for C supports link arguments -Wl,--exclude-libs=ALL: YES
Library m found: YES
Program python3 found: YES (//home/piotro/minimyth2-aarch64-next/images/build/usr/bin/python3)
Run-time dependency threads found: YES
Header "pthread.h" has symbol "pthread_condattr_setclock" with dependency threads: YES
Found pkg-config: YES (//home/piotro/minimyth2-aarch64-next/images/build/usr/bin/pkg-config) 0.29.2
Found CMake: NO
Run-time dependency libunwind found: NO (tried pkgconfig and cmake)
Library execinfo found: NO
Checking for function "backtrace_symbols" with dependency -lexecinfo: YES
Check usable header "dbghelp.h" : NO
Fetching value of define "__MINGW32__" : (undefined)
Run-time dependency shaderc found: NO (tried pkgconfig, pkgconfig, pkgconfig and system)
Library glslang-default-resource-limits found: YES
Library SPIRV found: YES
Has header "glslang/build_info.h" : YES
Check usable header "d3d11.h" : NO
Check usable header "d3d11_4.h" : NO
Check usable header "dxgi1_6.h" : NO
Run-time dependency spirv-cross-c-shared found: NO (tried pkgconfig and cmake)
Library version found: NO
Library dl found: YES
Run-time dependency vulkan found: NO (tried pkgconfig and system)
Header "vulkan/vulkan_core.h" has symbol "VK_VERSION_1_3" with dependency vulkan: NO
Run-time dependency lcms2 found: NO (tried pkgconfig and cmake)
Run-time dependency dovi found: NO (tried pkgconfig and cmake)
Run-time dependency libxxhash found: NO (tried pkgconfig and cmake)
Configuring config.h using configuration
Configuring config_internal.h using configuration
WARNING: Library target 'placebo' has 'name_prefix' set. Compilers may not find it from its '-lplacebo' linker flag in the 'libplacebo.pc' pkg-config file.
WARNING: Library target 'placebo' has 'name_prefix' set. Compilers may not find it from its '-lplacebo' linker flag in the 'libplacebo-uninstalled.pc' pkg-config file.
Build targets in project: 16

libplacebo 6.338.2

  Optional features
    d3d11          : NO
    dovi           : YES
    gl-proc-addr   : YES
    glslang        : YES
    lcms           : NO
    libdovi        : NO
    opengl         : YES
    shaderc        : NO
    vk-proc-addr   : NO
    vulkan         : NO
    xxhash         : NO

  User defined options
    Cross files    : //home/piotro/minimyth2-aarch64-next/images/build/usr/share/meson/cross/aarch64-minimyth-linux-gnu.conf
    bindir         : /usr/bin
    buildtype      : release
    datadir        : /usr/share
    includedir     : /usr/include
    infodir        : /usr/info
    libdir         : /usr/lib
    libexecdir     : /usr/libexec
    localstatedir  : /var
    mandir         : /usr/share/man
    prefix         : /usr
    sbindir        : /usr/sbin
    sharedstatedir : /usr/share
    sysconfdir     : /etc
    demos          : false
    vk-proc-addr   : disabled
    vulkan         : disabled
    vulkan-registry: disabled

Found ninja-1.11.0 at //home/piotro/minimyth2-aarch64-next/images/build/usr/bin/ninja
WARNING: Running the setup command as `meson [options]` instead of `meson setup [options]` is ambiguous and deprecated.
    [configure] complete for libplacebo.
ninja: Entering directory `build'
[11/64] Generating src/version.h with a custom command
fatal: No annotated tags can describe 'c506cf48bae0ee73e882276bcccbd2198201edfe'.
However, there were unannotated tags: try --tags.
[15/64] Generating src/opengl/include/glad/gl.h with a custom command (wrapped by meson to set env)
[27.02.2024 11:37:48][DEBUG ][glad.plugin   ]: loaded language c: <class 'glad.generator.c.__init__.CGenerator'>
[27.02.2024 11:37:48][DEBUG ][glad.plugin   ]: loaded language rust: <class 'glad.generator.rust.__init__.RustGenerator'>
[27.02.2024 11:37:48][DEBUG ][glad.plugin   ]: loaded specification egl: <class 'glad.specification.EGL'>
[27.02.2024 11:37:48][DEBUG ][glad.plugin   ]: loaded specification gl: <class 'glad.specification.GL'>
[27.02.2024 11:37:48][DEBUG ][glad.plugin   ]: loaded specification glx: <class 'glad.specification.GLX'>
[27.02.2024 11:37:48][DEBUG ][glad.plugin   ]: loaded specification vk: <class 'glad.specification.VK'>
[27.02.2024 11:37:48][DEBUG ][glad.plugin   ]: loaded specification wgl: <class 'glad.specification.WGL'>
[27.02.2024 11:37:48][INFO  ][glad      ]: getting 'gl' specification from remote location
[27.02.2024 11:37:48][DEBUG ][glad.files    ]: intercepted attempt to retrieve resource: 'https://raw.githubusercontent.com/KhronosGroup/OpenGL-Registry/main/xml/gl.xml'
[27.02.2024 11:37:48][INFO  ][glad.files    ]: opening packaged resource: 'gl.xml'
[27.02.2024 11:37:48][INFO  ][glad      ]: getting 'egl' specification from remote location
[27.02.2024 11:37:48][DEBUG ][glad.files    ]: intercepted attempt to retrieve resource: 'https://raw.githubusercontent.com/KhronosGroup/EGL-Registry/main/api/egl.xml'
[27.02.2024 11:37:48][INFO  ][glad.files    ]: opening packaged resource: 'egl.xml'
[27.02.2024 11:37:48][INFO  ][glad      ]: generating gl:core/gl=None
[27.02.2024 11:37:48][INFO  ][glad      ]: no explicit version given for api gl, using Version(major=4, minor=6)
[27.02.2024 11:37:48][INFO  ][glad      ]: generating gles2:None/gl=None
[27.02.2024 11:37:48][INFO  ][glad      ]: no explicit version given for api gles2, using Version(major=3, minor=2)
[27.02.2024 11:37:48][INFO  ][glad      ]: merging [FeatureSet(name=gl, info=[gl:core=4.6], extensions=21), FeatureSet(name=gles2, info=[gles2=3.2], extensions=10)]
[27.02.2024 11:37:48][INFO  ][glad      ]: merged into FeatureSet(name=gl, info=[gl:core=4.6, gles2=3.2], extensions=29)
[27.02.2024 11:37:48][INFO  ][glad      ]: generating feature set FeatureSet(name=gl, info=[gl:core=4.6, gles2=3.2], extensions=29)
[27.02.2024 11:37:48][DEBUG ][glad.files    ]: intercepted attempt to retrieve resource: 'https://raw.githubusercontent.com/KhronosGroup/EGL-Registry/main/api/KHR/khrplatform.h'
[27.02.2024 11:37:48][INFO  ][glad.files    ]: opening packaged resource: 'khrplatform.h'
[27.02.2024 11:37:49][INFO  ][glad      ]: generating egl:None/egl=None
[27.02.2024 11:37:49][INFO  ][glad      ]: no explicit version given for api egl, using Version(major=1, minor=5)
[27.02.2024 11:37:49][INFO  ][glad      ]: merging [FeatureSet(name=egl, info=[egl=1.5], extensions=7)]
[27.02.2024 11:37:49][INFO  ][glad      ]: merged into FeatureSet(name=egl, info=[egl=1.5], extensions=7)
[27.02.2024 11:37:49][INFO  ][glad      ]: generating feature set FeatureSet(name=egl, info=[egl=1.5], extensions=7)
[27.02.2024 11:37:49][DEBUG ][glad.files    ]: intercepted attempt to retrieve resource: 'https://raw.githubusercontent.com/KhronosGroup/EGL-Registry/main/api/EGL/eglplatform.h'
[27.02.2024 11:37:49][INFO  ][glad.files    ]: opening packaged resource: 'eglplatform.h'
[39/64] Compiling C object src/libplacebo.so.338.p/vulkan_stubs.c.o
FAILED: src/libplacebo.so.338.p/vulkan_stubs.c.o
//home/piotro/minimyth2-aarch64-next/images/build/usr/bin/aarch64-minimyth-linux-gnu-gcc -Isrc/libplacebo.so.338.p -Isrc -I../src -Isrc/include -I../src/include -Isrc/opengl/include -I../src/opengl/include -Isrc/shaders -Isrc/opengl/include/glad -fvisibility=hidden -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=c11 -O3 -Wundef -Wshadow -Wparentheses -Wpointer-arith -fno-math-errno -D_ISOC99_SOURCE -D_ISOC11_SOURCE -D_GNU_SOURCE -U__STRICT_ANSI__ -Wmissing-prototypes -Wno-sign-compare -Wno-unused-parameter -Wno-missing-field-initializers -Wno-type-limits -Werror=implicit-function-declaration -Werror=incompatible-pointer-types -Wundef -Wshadow -Wparentheses -Wpointer-arith -fno-math-errno -fPIC -pthread -DPL_HAVE_PTHREAD -DPTHREAD_HAS_SETCLOCK -DPL_EXPORT -MD -MQ src/libplacebo.so.338.p/vulkan_stubs.c.o -MF src/libplacebo.so.338.p/vulkan_stubs.c.o.d -o src/libplacebo.so.338.p/vulkan_stubs.c.o -c ../src/vulkan/stubs.c
In file included from ../src/vulkan/stubs.c:21:
../src/include/libplacebo/vulkan.h:21:10: fatal error: vulkan/vulkan.h: No such file or directory
   21 | #include <vulkan/vulkan.h>
      |          ^~~~~~~~~~~~~~~~~
compilation terminated.
[61/64] Compiling C object src/libplacebo.so.338.p/opengl_loader_gl.c.o
In file included from ../src/opengl/common.h:32,
                 from ../src/opengl/loader_gl.c:2:
src/opengl/include/glad/gl.h:5473:7: warning: "GLAD_GLES2_USE_SYSTEM_EGL" is not defined, evaluates to 0 [-Wundef]
 5473 | #elif GLAD_GLES2_USE_SYSTEM_EGL
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~
[63/64] Compiling C object src/libplacebo.so.338.p/meson-generated_.._renderer.c.o
ninja: build stopped: subcommand failed.
make: *** [../../gar.lib.mk:327: build-meson] Error 1
haasn commented 7 months ago

Hi, you still need the vulkan headers present at compile time, to compile the relevant vulkan-is-disabled API stubs. This shouldn't meaningfully affect binary size.

If you do git submodule update --init, a recent-enough copy should be pulled into the source directory automatically.

warpme commented 7 months ago

Many thx! Works now :-)