mesonbuild / meson

The Meson Build System
http://mesonbuild.com
Apache License 2.0
5.33k stars 1.53k forks source link

find_library static keyword breaks library detection on Windows with clang #13204

Open kasper93 opened 3 weeks ago

kasper93 commented 3 weeks ago

Looking at the logs, there is nothing even being detected when static is used.

meson.build:

lib = cc.find_library('ws2_32', required: false)
``` Running compile: Working directory: E:\dev\mpv\build_msvc3\meson-private\tmpt34mftny Code: int main(void) { return 0; } ----------- Command line: `clang E:\dev\mpv\build_msvc3\meson-private\tmpt34mftny\testfile.c -o E:\dev\mpv\build_msvc3\meson-private\tmpt34mftny\output.exe -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -lws2_32 -Wl,/nologo -Wl,-fuse-ld=lld -Wl,-fuse-ld=lld` -> 0 stdout: LINK : warning LNK4044: unrecognized option '/fuse-ld=lld'; ignored LINK : warning LNK4044: unrecognized option '/fuse-ld=lld'; ignored ----------- Library ws2_32 found: YES ```

meson.build:

lib = cc.find_library('ws2_32', static: false, required: false)
``` Running compile: Working directory: E:\dev\mpv\build_msvc3\meson-private\tmpdp__g3n2 Code: #include #include int main(void) { printf("%ld\n", (long)(sizeof(void *))); return 0; } ----------- Command line: `clang E:\dev\mpv\build_msvc3\meson-private\tmpdp__g3n2\testfile.c -o E:\dev\mpv\build_msvc3\meson-private\tmpdp__g3n2\output.exe -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Wl,-fuse-ld=lld` -> 0 stdout: LINK : warning LNK4044: unrecognized option '/fuse-ld=lld'; ignored ----------- Program stdout: 8 Program stderr: Running compile: Working directory: E:\dev\mpv\build_msvc3\meson-private\tmp_hz4pix1 Code: ----------- Command line: `clang E:\dev\mpv\build_msvc3\meson-private\tmp_hz4pix1\testfile.c -o E:\dev\mpv\build_msvc3\meson-private\tmp_hz4pix1\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument --print-search-dirs` -> 0 stdout: programs: =C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin libraries: =C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\lib\clang\17 ----------- Library ws2_32 found: NO ```

meson.build:

lib = cc.find_library('ws2_32', static: true, required: false)
``` Running compile: Working directory: E:\dev\mpv\build_msvc3\meson-private\tmp5_hf8yyb Code: #include #include int main(void) { printf("%ld\n", (long)(sizeof(void *))); return 0; } ----------- Command line: `clang E:\dev\mpv\build_msvc3\meson-private\tmp5_hf8yyb\testfile.c -o E:\dev\mpv\build_msvc3\meson-private\tmp5_hf8yyb\output.exe -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Wl,-fuse-ld=lld` -> 0 stdout: LINK : warning LNK4044: unrecognized option '/fuse-ld=lld'; ignored ----------- Program stdout: 8 Program stderr: Running compile: Working directory: E:\dev\mpv\build_msvc3\meson-private\tmp0ry2wt9_ Code: ----------- Command line: `clang E:\dev\mpv\build_msvc3\meson-private\tmp0ry2wt9_\testfile.c -o E:\dev\mpv\build_msvc3\meson-private\tmp0ry2wt9_\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument --print-search-dirs` -> 0 stdout: programs: =C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin libraries: =C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\lib\clang\17 ----------- Library ws2_32 found: NO ```

Expected behavior

Library is found with static keyword, at least in one of the value.

system parameters