diff --git a/Modules/CMakeDetermineCompilerABI.cmake b/Modules/CMakeDetermineCompilerABI.cmake index 53eaf58c0b..acd372eed6 100644 --- a/Modules/CMakeDetermineCompilerABI.cmake +++ b/Modules/CMakeDetermineCompilerABI.cmake @@ -256,6 +256,11 @@ function(CMAKE_DETERMINE_COMPILER_ABI lang src) endif() endif() + # Filter out implicit link directories excluded by our Platform/* modules. + if(DEFINED CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES_EXCLUDE) + list(REMOVE_ITEM implicit_dirs ${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES_EXCLUDE}) + endif() + # Filter out implicit link directories excluded by the environment. if(DEFINED ENV{CMAKE_${lang}_IMPLICIT_LINK_DIRECTORIES_EXCLUDE}) list(REMOVE_ITEM implicit_dirs $ENV{CMAKE_${lang}_IMPLICIT_LINK_DIRECTORIES_EXCLUDE}) diff --git a/Modules/Platform/Darwin-Initialize.cmake b/Modules/Platform/Darwin-Initialize.cmake index 1a47d9abd8..245170c390 100644 --- a/Modules/Platform/Darwin-Initialize.cmake +++ b/Modules/Platform/Darwin-Initialize.cmake @@ -292,4 +292,11 @@ if(NOT CMAKE_OSX_SYSROOT) RESULT_VARIABLE _result ) unset(_sdk_macosx) + + list(APPEND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES_EXCLUDE + # Without -isysroot, some compiler drivers implicitly pass -L/usr/local/lib + # to the linker. Since the macOS dynamic loader does not search it by + # default, it is not a fully-implemented implicit link directory. + /usr/local/lib + ) endif()