mirror of
https://github.com/reactos/CMake.git
synced 2024-11-24 12:09:48 +00:00
Merge topic 'FindPkgConfig_search_path_fix'
40b95ee8
FindPkgConfig: Fix IMPORTED_TARGET NO...PATH option handlingb0ff528a
FindPkgConfig: Make IMPORTED_TARGET test verify NO...PATH properly Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: Rolf Eike Beer <eike@sf-mail.de> Merge-request: !1602
This commit is contained in:
commit
4309ed25ee
@ -191,10 +191,10 @@ function(_pkg_create_imp_target _prefix _no_cmake_path _no_cmake_environment_pat
|
||||
# set the options that are used as long as the .pc file does not provide a library
|
||||
# path to look into
|
||||
if(_no_cmake_path)
|
||||
set(_find_opts "NO_CMAKE_PATH")
|
||||
list(APPEND _find_opts "NO_CMAKE_PATH")
|
||||
endif()
|
||||
if(_no_cmake_environment_path)
|
||||
string(APPEND _find_opts " NO_CMAKE_ENVIRONMENT_PATH")
|
||||
list(APPEND _find_opts "NO_CMAKE_ENVIRONMENT_PATH")
|
||||
endif()
|
||||
|
||||
unset(_search_paths)
|
||||
@ -458,7 +458,7 @@ macro(_pkg_check_modules_internal _is_required _is_silent _no_cmake_path _no_cma
|
||||
_pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" CFLAGS_OTHER "" --cflags-only-other )
|
||||
|
||||
if (_imp_target)
|
||||
_pkg_create_imp_target("${_prefix}" _no_cmake_path _no_cmake_environment_path)
|
||||
_pkg_create_imp_target("${_prefix}" ${_no_cmake_path} ${_no_cmake_environment_path})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@ -590,7 +590,7 @@ macro(pkg_check_modules _prefix _module0)
|
||||
_pkgconfig_set(__pkg_config_arguments_${_prefix} "${_module0};${ARGN}")
|
||||
endif()
|
||||
elseif (${_prefix}_FOUND AND ${_imp_target})
|
||||
_pkg_create_imp_target("${_prefix}" _no_cmake_path _no_cmake_environment_path)
|
||||
_pkg_create_imp_target("${_prefix}" ${_no_cmake_path} ${_no_cmake_environment_path})
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
@ -644,7 +644,7 @@ macro(pkg_search_module _prefix _module0)
|
||||
|
||||
_pkgconfig_set(__pkg_config_checked_${_prefix} ${PKG_CONFIG_VERSION})
|
||||
elseif (${_prefix}_FOUND AND ${_imp_target})
|
||||
_pkg_create_imp_target("${_prefix}" _no_cmake_path _no_cmake_environment_path)
|
||||
_pkg_create_imp_target("${_prefix}" ${_no_cmake_path} ${_no_cmake_environment_path})
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
|
@ -24,3 +24,64 @@ if (NCURSES_FOUND)
|
||||
else ()
|
||||
message(STATUS "skipping test; ncurses not found")
|
||||
endif ()
|
||||
|
||||
|
||||
# Setup for the remaining package tests below
|
||||
set(PKG_CONFIG_USE_CMAKE_PREFIX_PATH)
|
||||
set(fakePkgDir ${CMAKE_CURRENT_BINARY_DIR}/pc-fakepackage)
|
||||
foreach(i 1 2)
|
||||
set(pname cmakeinternalfakepackage${i})
|
||||
file(WRITE ${fakePkgDir}/lib/lib${pname}.a "")
|
||||
file(WRITE ${fakePkgDir}/lib/${pname}.lib "")
|
||||
file(WRITE ${fakePkgDir}/lib/pkgconfig/${pname}.pc
|
||||
"Name: CMakeInternalFakePackage${i}
|
||||
Description: Dummy package (${i}) for FindPkgConfig IMPORTED_TARGET test
|
||||
Version: 1.2.3
|
||||
Libs: -l${pname}
|
||||
")
|
||||
endforeach()
|
||||
|
||||
# Always find the .pc file in the calls further below so that we can test that
|
||||
# the import target find_library() calls handle the NO...PATH options correctly
|
||||
set(ENV{PKG_CONFIG_PATH} ${fakePkgDir}/lib/pkgconfig)
|
||||
|
||||
# Confirm correct behavior of NO_CMAKE_PATH, ensuring we only find the library
|
||||
# for the imported target if we have both set CMAKE_PREFIX_PATH and have not
|
||||
# given the NO_CMAKE_PATH option
|
||||
unset(CMAKE_PREFIX_PATH)
|
||||
unset(ENV{CMAKE_PREFIX_PATH})
|
||||
pkg_check_modules(FakePackage1 QUIET IMPORTED_TARGET cmakeinternalfakepackage1)
|
||||
if (TARGET PkgConfig::FakePackage1)
|
||||
message(FATAL_ERROR "Have import target for fake package 1 with no path prefix")
|
||||
endif()
|
||||
|
||||
set(CMAKE_PREFIX_PATH ${fakePkgDir})
|
||||
pkg_check_modules(FakePackage1 QUIET IMPORTED_TARGET NO_CMAKE_PATH cmakeinternalfakepackage1)
|
||||
if (TARGET PkgConfig::FakePackage1)
|
||||
message(FATAL_ERROR "Have import target for fake package 1 with ignored cmake path")
|
||||
endif()
|
||||
|
||||
pkg_check_modules(FakePackage1 REQUIRED QUIET IMPORTED_TARGET cmakeinternalfakepackage1)
|
||||
if (NOT TARGET PkgConfig::FakePackage1)
|
||||
message(FATAL_ERROR "No import target for fake package 1 with prefix path")
|
||||
endif()
|
||||
|
||||
# And now do the same for the NO_CMAKE_ENVIRONMENT_PATH - ENV{CMAKE_PREFIX_PATH}
|
||||
# combination
|
||||
unset(CMAKE_PREFIX_PATH)
|
||||
unset(ENV{CMAKE_PREFIX_PATH})
|
||||
pkg_check_modules(FakePackage2 QUIET IMPORTED_TARGET cmakeinternalfakepackage2)
|
||||
if (TARGET PkgConfig::FakePackage2)
|
||||
message(FATAL_ERROR "Have import target for fake package 2 with no path prefix")
|
||||
endif()
|
||||
|
||||
set(ENV{CMAKE_PREFIX_PATH} ${fakePkgDir})
|
||||
pkg_check_modules(FakePackage2 QUIET IMPORTED_TARGET NO_CMAKE_ENVIRONMENT_PATH cmakeinternalfakepackage2)
|
||||
if (TARGET PkgConfig::FakePackage2)
|
||||
message(FATAL_ERROR "Have import target for fake package 2 with ignored cmake path")
|
||||
endif()
|
||||
|
||||
pkg_check_modules(FakePackage2 REQUIRED QUIET IMPORTED_TARGET cmakeinternalfakepackage2)
|
||||
if (NOT TARGET PkgConfig::FakePackage2)
|
||||
message(FATAL_ERROR "No import target for fake package 2 with prefix path")
|
||||
endif()
|
||||
|
Loading…
Reference in New Issue
Block a user