Skip to content

Commit

Permalink
FindKLU.cmake: Avoid detecting MSVC libraries when targeting MinGW (#476
Browse files Browse the repository at this point in the history
)

For MinGW, setting the library prefix is not necessary and setting the
library suffix to d.lib is incorrect. The static library suffix is .a
for MinGW.

Prepending those values to the list of library prefixes and suffixes
might not actually cause an issue if no libraries are found that match
those patterns. But slight ABI differences between MSVC and MinGW could
lead to unexpected behavior when mixing binaries of both targets.

This was already discussed in
#407 (comment). But
apparently that change got lost in one of the rebases in that PR.

---------

Signed-off-by: Markus Mützel <markus.muetzel@gmx.de>
  • Loading branch information
mmuetzel authored May 15, 2024
1 parent fe94036 commit d0ed8b3
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions cmake/tpl/FindKLU.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ if (NOT (KLU_INCLUDE_DIR OR KLU_LIBRARY_DIR OR KLU_LIBRARY))
endif()

# Set library prefixes for Windows
if(WIN32)
if(MSVC OR ("${CMAKE_C_SIMULATE_ID}" STREQUAL "MSVC"))
set(CMAKE_FIND_LIBRARY_PREFIXES lib ${CMAKE_FIND_LIBRARY_PREFIXES})
set(CMAKE_FIND_LIBRARY_SUFFIXES d.lib ${CMAKE_FIND_LIBRARY_SUFFIXES})
elseif(APPLE)
Expand Down Expand Up @@ -95,7 +95,7 @@ endif ()
if (NOT SUITESPARSECONFIG_LIBRARY)
set(SUITESPARSECONFIG_LIBRARY_NAME suitesparseconfig)
# NOTE: no prefix for this library on windows
if(WIN32 AND NOT MSYS)
if(MSVC OR ("${CMAKE_C_SIMULATE_ID}" STREQUAL "MSVC"))
set(CMAKE_FIND_LIBRARY_PREFIXES "")
endif()
find_library( SUITESPARSECONFIG_LIBRARY ${SUITESPARSECONFIG_LIBRARY_NAME} ${KLU_LIBRARY_DIR} NO_DEFAULT_PATH)
Expand Down

0 comments on commit d0ed8b3

Please sign in to comment.