diff --git a/llvm/cmake/modules/Findzstd.cmake b/llvm/cmake/modules/Findzstd.cmake --- a/llvm/cmake/modules/Findzstd.cmake +++ b/llvm/cmake/modules/Findzstd.cmake @@ -34,9 +34,23 @@ if(zstd_LIBRARY MATCHES "${zstd_SHARED_LIBRARY_SUFFIX}$" AND NOT TARGET zstd::libzstd_shared) add_library(zstd::libzstd_shared SHARED IMPORTED) - set_target_properties(zstd::libzstd_shared PROPERTIES + if(MSVC) + # IMPORTED_LOCATION is the path to the DLL and IMPORTED_IMPLIB is the "library". + get_filename_component(zstd_DIRNAME "${zstd_LIBRARY}" DIRECTORY) + string(REGEX REPLACE "${CMAKE_INSTALL_LIBDIR}$" "${CMAKE_INSTALL_BINDIR}" zstd_DIRNAME "${zstd_DIRNAME}") + get_filename_component(zstd_BASENAME "${zstd_LIBRARY}" NAME) + string(REGEX REPLACE "\\${CMAKE_LINK_LIBRARY_SUFFIX}$" "${CMAKE_SHARED_LIBRARY_SUFFIX}" zstd_BASENAME "${zstd_BASENAME}") + set_target_properties(zstd::libzstd_shared PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${zstd_INCLUDE_DIR}" + IMPORTED_LOCATION "${zstd_DIRNAME}/${zstd_BASENAME}" + IMPORTED_IMPLIB "${zstd_LIBRARY}") + unset(zstd_DIRNAME) + unset(zstd_BASENAME) + else() + set_target_properties(zstd::libzstd_shared PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${zstd_INCLUDE_DIR}" IMPORTED_LOCATION "${zstd_LIBRARY}") + endif() else() set(zstd_STATIC_LIBRARY "${zstd_LIBRARY}") endif()