From 979b047114622265b6015a9587434e8229429411 Mon Sep 17 00:00:00 2001 From: Tobias Hieta Date: Wed, 22 Mar 2023 22:13:57 +0100 Subject: [PATCH] Disable linker flag detection on MSVC/ClangCL. This fixes compilation with clang-cl on Windows. There is a bug in cmake so that check_linker_flag() doesn't give the correct result when using link.exe/lld-link.exe. Details in CMake's gitlab: https://gitlab.kitware.com/cmake/cmake/-/issues/22023 Fixes #3522 --- build/cmake/CMakeModules/AddZstdCompilationFlags.cmake | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/build/cmake/CMakeModules/AddZstdCompilationFlags.cmake b/build/cmake/CMakeModules/AddZstdCompilationFlags.cmake index 763d27ba4ba..5f179989b68 100644 --- a/build/cmake/CMakeModules/AddZstdCompilationFlags.cmake +++ b/build/cmake/CMakeModules/AddZstdCompilationFlags.cmake @@ -33,7 +33,12 @@ function(EnableCompilerFlag _flag _C _CXX _LD) # implement CHECK_LINKER_FLAG() like feature for CMake < 3.18 # or require CMake >= 3.18 when we need to add a required # linker flag in future. - if (ZSTD_HAVE_CHECK_LINKER_FLAG) + # + # We also skip linker flags check for MSVC compilers (which includes + # clang-cl) since currently check_linker_flag() doesn't give correct + # results for this configuration, + # see: https://gitlab.kitware.com/cmake/cmake/-/issues/22023 + if (ZSTD_HAVE_CHECK_LINKER_FLAG AND NOT MSVC) CHECK_LINKER_FLAG(C ${_flag} LD_FLAG_${varname}) else () set(LD_FLAG_${varname} false)