Browse Source

MinGW: Update find_library to not find plain .dll files

Modern distributions of packages built with MinGW tools provide `.dll.a`
import libraries.  Prefer those instead of finding plain `.dll` files.
This avoids accidentally finding unrelated Windows `.dll` files.

Fixes: #20019
Brad King 6 years ago
parent
commit
afbbfe5109

+ 6 - 0
Help/release/dev/mingw-find-no-dll.rst

@@ -0,0 +1,6 @@
+mingw-find-no-dll
+-----------------
+
+* When using MinGW tools, the :command:`find_library` command no longer
+  finds ``.dll`` files by default.  Instead it expects ``.dll.a`` import
+  libraries to be available.

+ 1 - 1
Modules/Platform/Windows-Clang.cmake

@@ -24,7 +24,7 @@ macro(__windows_compiler_clang_gnu lang)
   set(CMAKE_DEPFILE_FLAGS_${lang} "-MD -MT <OBJECT> -MF <DEPFILE>")
 
   set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "")
-  set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll" ".dll.a" ".a" ".lib")
+  set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll.a" ".a" ".lib")
   set(CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS 1)
   set (CMAKE_LINK_DEF_FILE_FLAG "-Xlinker /DEF:")
 

+ 1 - 1
Modules/Platform/Windows-GNU.cmake

@@ -25,7 +25,7 @@ endif()
 
 if(MINGW)
   set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "")
-  set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll" ".dll.a" ".a" ".lib")
+  set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll.a" ".a" ".lib")
   set(CMAKE_C_STANDARD_LIBRARIES_INIT "-lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32")
   set(CMAKE_CXX_STANDARD_LIBRARIES_INIT "${CMAKE_C_STANDARD_LIBRARIES_INIT}")
 endif()