Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to cross-compile with -Dlcms=enabled -Dshaderc=enabled -Dvulkan=enabled -Dd3d11=enabled #275

Open
Windev2024 opened this issue Jun 27, 2024 · 0 comments

Comments

@Windev2024
Copy link

Hello @haasn

I'm attempting to cross-compile libplacebo for Windows (i686 architecture) using Meson on a Linux host. I've set up my cross-compilation environment with the necessary tools (i686-w64-mingw32-gcc, i686-w64-mingw32-g++, etc.) and configured my Meson cross file (i686_64-w64-mingw32.txt) accordingly.

Configuration Details:

Cross File (i686_64-w64-mingw32.txt)
`[binaries]
c = 'i686-w64-mingw32-gcc'
cpp = 'i686-w64-mingw32-g++'
ar = 'i686-w64-mingw32-ar'
strip = 'i686-w64-mingw32-strip'
windres = 'i686-w64-mingw32-windres'
dlltool = 'i686-w64-mingw32-dlltool'
ld = 'i686-w64-mingw32-ld'

[built-in options]
buildtype = 'release'

[host_machine]
system = 'windows'
subsystem = 'windows'
cpu_family = 'x86'
cpu = 'i686'
endian = 'little'
`

I encountered several issues during the configuration phase:

Dependency Errors:

without pkg-config in cross file

`meson setup -Ddefault_library=static -Dprefer_static=true -Dc_link_args='-static' -Dcpp_link_args='-static' -Dlcms=enabled -Dshaderc=enabled -Dvulkan=enabled -Dd3d11=enabled --cross-file i686_64-w64-mingw32.txt build
The Meson build system
Version: 1.3.2
Source dir: /home/libplacebo
Build dir: /home/libplacebo/build
Build type: cross build
Project name: libplacebo
Project version: 7.349.0
C compiler for the host machine: i686-w64-mingw32-gcc (gcc 13.0.0 "i686-w64-mingw32-gcc (GCC) 13-win32")
C linker for the host machine: i686-w64-mingw32-gcc ld.bfd 2.41.90.20240122
C++ compiler for the host machine: i686-w64-mingw32-g++ (gcc 13.0.0 "i686-w64-mingw32-g++ (GCC) 13-win32")
C++ linker for the host machine: i686-w64-mingw32-g++ ld.bfd 2.41.90.20240122
C compiler for the build machine: ccache cc (gcc 13.2.0 "cc (Ubuntu 13.2.0-23ubuntu4) 13.2.0")
C linker for the build machine: cc ld.bfd 2.42
C++ compiler for the build machine: ccache c++ (gcc 13.2.0 "c++ (Ubuntu 13.2.0-23ubuntu4) 13.2.0")
C++ linker for the build machine: c++ ld.bfd 2.42
Build machine cpu family: x86_64
Build machine cpu: x86_64
Host machine cpu family: x86
Host machine cpu: i686
Target machine cpu family: x86
Target machine cpu: i686
Compiler for C supports arguments -Wincompatible-pointer-types: YES
Compiler for C supports link arguments -Wl,--exclude-libs=ALL: YES
Configuring libplacebo.rc using configuration
Configuring demos.rc using configuration
Library m found: YES
Program python3 found: YES (/usr/bin/python3)
Found pkg-config: NO
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: NO
Check usable header "dbghelp.h" : YES
Library shlwapi found: YES
Fetching value of define "MINGW32" : 1
Run-time dependency shaderc found: NO (tried system)

src/glsl/meson.build:2:10: ERROR: Dependency lookup for shaderc with method 'pkgconfig' failed: Pkg-config for machine host machine not found. Giving up.
`
with pkgconfig in cross file pkg-config = '/usr/bin/i686-w64-mingw32-pkg-config'

`Run-time dependency shaderc found: NO (tried pkgconfig, pkgconfig, pkgconfig and system)

src/glsl/meson.build:2:10: ERROR: Dependency "shaderc" not found, tried pkgconfig, pkgconfig, pkgconfig and system
`
When I include pkg-config = 'pkgconf' in the cross file

`The Meson build system
Version: 1.3.2
Source dir: /home/libplacebo
Build dir: /home/libplacebo/build
Build type: cross build
Project name: libplacebo
Project version: 7.349.0
C compiler for the host machine: i686-w64-mingw32-gcc (gcc 13.0.0 "i686-w64-mingw32-gcc (GCC) 13-win32")
C linker for the host machine: i686-w64-mingw32-gcc ld.bfd 2.41.90.20240122
C++ compiler for the host machine: i686-w64-mingw32-g++ (gcc 13.0.0 "i686-w64-mingw32-g++ (GCC) 13-win32")
C++ linker for the host machine: i686-w64-mingw32-g++ ld.bfd 2.41.90.20240122
C compiler for the build machine: ccache cc (gcc 13.2.0 "cc (Ubuntu 13.2.0-23ubuntu4) 13.2.0")
C linker for the build machine: cc ld.bfd 2.42
C++ compiler for the build machine: ccache c++ (gcc 13.2.0 "c++ (Ubuntu 13.2.0-23ubuntu4) 13.2.0")
C++ linker for the build machine: c++ ld.bfd 2.42
Build machine cpu family: x86_64
Build machine cpu: x86_64
Host machine cpu family: x86
Host machine cpu: i686
Target machine cpu family: x86
Target machine cpu: i686
Compiler for C supports arguments -Wincompatible-pointer-types: YES
Compiler for C supports link arguments -Wl,--exclude-libs=ALL: YES
Configuring libplacebo.rc using configuration
Configuring demos.rc using configuration
Library m found: YES
Program python3 found: YES (/usr/bin/python3)
Found pkg-config: YES (/usr/bin/pkgconf) 1.8.1
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: NO
Check usable header "dbghelp.h" : YES
Library shlwapi found: YES
Fetching value of define "MINGW32" : 1
Run-time dependency shaderc found: YES 2023.8.1
Library glslang-default-resource-limits found: NO
Library SPIRV found: NO

src/glsl/meson.build:34:16: ERROR: C++ shared library 'SPIRV' not found
`
Could someone please advise on how to correctly configure Meson for cross-compiling libplacebo on Linux for Windows (i686)?

My main issue revolves around building mpv via cross-compilation using the Meson build system. For more details, please refer to this discussion

(mpv-player/mpv#14389)

Thank you for your assistance!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant