From 0af38d179e48a48354a863e2b7f6478ecd5db318 Mon Sep 17 00:00:00 2001 From: Lucian Petrut Date: Fri, 7 May 2021 09:23:30 +0000 Subject: [PATCH] win*.sh,cmake: Fix Windows linking errors The Windows build is hitting linking errors after bumping the Boost version to 1.75. The issue is that Boost is now setting the zlib dependecy using INTERFACE_LINK_LIBRARIES, which means that it's no longer located using the standard "find_package" mechanism. In order for the linker to locate zlib, we'll add it to the linker search path. [1] https://github.com/boostorg/boost_install/issues/47 Signed-off-by: Lucian Petrut --- CMakeLists.txt | 1 + win32_build.sh | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index ac8fee04d1d63..55647fa24aba6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,6 +52,7 @@ if(MINGW) set(CMAKE_CXX_LINK_EXECUTABLE " -o ${CMAKE_GNULD_IMAGE_VERSION} ") + link_directories(${MINGW_LINK_DIRECTORIES}) endif() option(WITH_CCACHE "Build with ccache.") diff --git a/win32_build.sh b/win32_build.sh index 9e88df93f815e..d8b5f76f9818d 100755 --- a/win32_build.sh +++ b/win32_build.sh @@ -96,6 +96,12 @@ dokanLibDir="${depsToolsetDir}/dokany/lib" depsDirs="$lz4Dir;$curlDir;$sslDir;$boostDir;$zlibDir;$backtraceDir;$snappyDir" depsDirs+=";$winLibDir" +# Cmake recommends using CMAKE_PREFIX_PATH instead of link_directories. +# Still, some library dependencies may not include the full path (e.g. Boost +# sets the "-lz" flag through INTERFACE_LINK_LIBRARIES), which is why +# we have to ensure that the linker will be able to locate them. +linkDirs="$zlibDir/lib" + lz4Lib="${lz4Dir}/lib/dll/liblz4-1.dll" lz4Include="${lz4Dir}/lib" curlLib="${curlDir}/lib/libcurl.dll.a" @@ -149,6 +155,7 @@ fi # symbols. Until we fix the dependencies (which are either unspecified # or circular), we'll have to stick to static linking. cmake -D CMAKE_PREFIX_PATH=$depsDirs \ + -D MINGW_LINK_DIRECTORIES="$linkDirs" \ -D CMAKE_TOOLCHAIN_FILE="$MINGW_CMAKE_FILE" \ -D WITH_LIBCEPHSQLITE=OFF \ -D WITH_RDMA=OFF -D WITH_OPENLDAP=OFF \ -- 2.47.3