summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYuriy Khokhulya <yuriy.khokhulya@apostera.com>2017-05-11 20:46:21 (GMT)
committerBrad King <brad.king@kitware.com>2017-05-12 13:21:21 (GMT)
commit2e293c39da969cc0c39503e1fef6310b4ef85d85 (patch)
tree8e329d694f22598ee11909856bd507b4958d4826
parent8e2f3582eb9cf75c78fbe8232cdacce2357f7efc (diff)
downloadCMake-2e293c39da969cc0c39503e1fef6310b4ef85d85.zip
CMake-2e293c39da969cc0c39503e1fef6310b4ef85d85.tar.gz
CMake-2e293c39da969cc0c39503e1fef6310b4ef85d85.tar.bz2
FindPkgConfig: Fix pkg_check_modules() non-standard location search
During search of the library file `pkg_check_modules()` attempts to find it in last specified library path in `${_prefix}_LDFLAGS`, that after dependency resolving contains path to standard location. So in case when `${_prefix}_LDFLAGS` has: -L/prefix;-L/usr/local/lib;-llibrary_from_prefix;-ldependency `library_from_prefix` will not be found. As solution need try to find the library in all paths preceding to the library. Fixes: #16873
-rw-r--r--Modules/FindPkgConfig.cmake4
1 files changed, 3 insertions, 1 deletions
diff --git a/Modules/FindPkgConfig.cmake b/Modules/FindPkgConfig.cmake
index 54572f0..12a5ded 100644
--- a/Modules/FindPkgConfig.cmake
+++ b/Modules/FindPkgConfig.cmake
@@ -190,10 +190,12 @@ function(_pkg_create_imp_target _prefix _no_cmake_path _no_cmake_environment_pat
string(APPEND _find_opts " NO_CMAKE_ENVIRONMENT_PATH")
endif()
+ unset(_search_paths)
foreach (flag IN LISTS ${_prefix}_LDFLAGS)
if (flag MATCHES "^-L(.*)")
# only look into the given paths from now on
- set(_find_opts HINTS ${CMAKE_MATCH_1} NO_DEFAULT_PATH)
+ list(APPEND _search_paths ${CMAKE_MATCH_1})
+ set(_find_opts HINTS ${_search_paths} NO_DEFAULT_PATH)
continue()
endif()
if (flag MATCHES "^-l(.*)")