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
This commit is contained in:
Brad King 2020-01-20 13:31:01 -05:00
parent 941c09616b
commit afbbfe5109
3 changed files with 8 additions and 2 deletions

View File

@ -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.

View File

@ -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:")

View File

@ -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()