Merge topic 'extend-find-package-search-path'

828d6c13 find_package: Extend search path for combined Windows/UNIX convention
ff5c89de Help: Widen find_package search path table
This commit is contained in:
Brad King 2016-08-24 09:45:47 -04:00 committed by CMake Topic Stage
commit ccddb454b8
9 changed files with 82 additions and 9 deletions

View File

@ -194,13 +194,16 @@ configuration file. The tables below show the directories searched.
Each entry is meant for installation trees following Windows (W), UNIX Each entry is meant for installation trees following Windows (W), UNIX
(U), or Apple (A) conventions:: (U), or Apple (A) conventions::
<prefix>/ (W) <prefix>/ (W)
<prefix>/(cmake|CMake)/ (W) <prefix>/(cmake|CMake)/ (W)
<prefix>/<name>*/ (W) <prefix>/<name>*/ (W)
<prefix>/<name>*/(cmake|CMake)/ (W) <prefix>/<name>*/(cmake|CMake)/ (W)
<prefix>/(lib/<arch>|lib|share)/cmake/<name>*/ (U) <prefix>/(lib/<arch>|lib|share)/cmake/<name>*/ (U)
<prefix>/(lib/<arch>|lib|share)/<name>*/ (U) <prefix>/(lib/<arch>|lib|share)/<name>*/ (U)
<prefix>/(lib/<arch>|lib|share)/<name>*/(cmake|CMake)/ (U) <prefix>/(lib/<arch>|lib|share)/<name>*/(cmake|CMake)/ (U)
<prefix>/<name>*/(lib/<arch>|lib|share)/cmake/<name>*/ (W/U)
<prefix>/<name>*/(lib/<arch>|lib|share)/<name>*/ (W/U)
<prefix>/<name>*/(lib/<arch>|lib|share)/<name>*/(cmake|CMake)/ (W/U)
On systems supporting OS X Frameworks and Application Bundles the On systems supporting OS X Frameworks and Application Bundles the
following directories are searched for frameworks or bundles following directories are searched for frameworks or bundles

View File

@ -1961,6 +1961,44 @@ bool cmFindPackageCommand::SearchPrefix(std::string const& prefix_in)
} }
} }
// PREFIX/(Foo|foo|FOO).*/(lib/ARCH|lib|share)/cmake/(Foo|foo|FOO).*/
{
cmFindPackageFileList lister(this);
lister / cmFileListGeneratorFixed(prefix) /
cmFileListGeneratorProject(this->Names) /
cmFileListGeneratorEnumerate(common) /
cmFileListGeneratorFixed("cmake") /
cmFileListGeneratorProject(this->Names);
if (lister.Search()) {
return true;
}
}
// PREFIX/(Foo|foo|FOO).*/(lib/ARCH|lib|share)/(Foo|foo|FOO).*/
{
cmFindPackageFileList lister(this);
lister / cmFileListGeneratorFixed(prefix) /
cmFileListGeneratorProject(this->Names) /
cmFileListGeneratorEnumerate(common) /
cmFileListGeneratorProject(this->Names);
if (lister.Search()) {
return true;
}
}
// PREFIX/(Foo|foo|FOO).*/(lib/ARCH|lib|share)/(Foo|foo|FOO).*/(cmake|CMake)/
{
cmFindPackageFileList lister(this);
lister / cmFileListGeneratorFixed(prefix) /
cmFileListGeneratorProject(this->Names) /
cmFileListGeneratorEnumerate(common) /
cmFileListGeneratorProject(this->Names) /
cmFileListGeneratorCaseInsensitive("cmake");
if (lister.Search()) {
return true;
}
}
return false; return false;
} }

View File

@ -0,0 +1 @@
# Test config file.

View File

@ -0,0 +1,7 @@
set(PACKAGE_VERSION 1.3)
if("${PACKAGE_FIND_VERSION_MAJOR}" EQUAL 1)
set(PACKAGE_VERSION_COMPATIBLE 1)
if("${PACKAGE_FIND_VERSION_MINOR}" EQUAL 3)
set(PACKAGE_VERSION_EXACT 1)
endif()
endif()

View File

@ -0,0 +1 @@
# Test config file.

View File

@ -0,0 +1,7 @@
set(PACKAGE_VERSION 2.0)
if("${PACKAGE_FIND_VERSION_MAJOR}" EQUAL 2)
set(PACKAGE_VERSION_COMPATIBLE 1)
if("${PACKAGE_FIND_VERSION_MINOR}" EQUAL 0)
set(PACKAGE_VERSION_EXACT 1)
endif()
endif()

View File

@ -0,0 +1 @@
# Test config file.

View File

@ -0,0 +1,7 @@
set(PACKAGE_VERSION 2.1)
if("${PACKAGE_FIND_VERSION_MAJOR}" EQUAL 2)
set(PACKAGE_VERSION_COMPATIBLE 1)
if("${PACKAGE_FIND_VERSION_MINOR}" EQUAL 1)
set(PACKAGE_VERSION_EXACT 1)
endif()
endif()

View File

@ -102,6 +102,7 @@ endif()
set(PACKAGES set(PACKAGES
foo Foo Bar Blub TFramework Tframework TApp Tapp Special foo Foo Bar Blub TFramework Tframework TApp Tapp Special
VersionedA VersionedB VersionedC VersionedD VersionedE VersionedA VersionedB VersionedC VersionedD VersionedE
VersionedF VersionedG VersionedH
WrongA WrongB WrongC WrongD WrongA WrongB WrongC WrongD
wibbleA wibbleB wibbleA wibbleB
RecursiveA RecursiveB RecursiveC RecursiveA RecursiveB RecursiveC
@ -142,6 +143,10 @@ find_package(VersionedB 3.1 EXACT NAMES zot)
find_package(VersionedC 4.0 EXACT NAMES zot) find_package(VersionedC 4.0 EXACT NAMES zot)
find_package(VersionedD 1.1 EXACT NAMES Baz) find_package(VersionedD 1.1 EXACT NAMES Baz)
find_package(VersionedE 1.2 EXACT NAMES Baz) find_package(VersionedE 1.2 EXACT NAMES Baz)
find_package(VersionedF 1.3 EXACT NAMES Baz)
find_package(VersionedG 2.0 EXACT NAMES Baz)
find_package(VersionedH 2.1 EXACT NAMES Baz)
# Test Config files which set Xyz_FOUND themselves: # Test Config files which set Xyz_FOUND themselves:
find_package(SetFoundTRUE NO_MODULE) find_package(SetFoundTRUE NO_MODULE)
@ -158,12 +163,12 @@ find_package(WrongB 1.2 EXACT NAMES Baz)
# Test wrong initial path when result is missing. # Test wrong initial path when result is missing.
set(WrongC_DIR "${VersionedD_DIR}") set(WrongC_DIR "${VersionedD_DIR}")
find_package(WrongC 1.3 EXACT QUIET NAMES Baz) find_package(WrongC 1.4 EXACT QUIET NAMES Baz)
# Test wrong initial cache entry of UNINITIALIZED type when result is missing. # Test wrong initial cache entry of UNINITIALIZED type when result is missing.
set(WrongD_DIR "${VersionedD_DIR}" CACHE UNINITIALIZED "Wrong Value" FORCE) set(WrongD_DIR "${VersionedD_DIR}" CACHE UNINITIALIZED "Wrong Value" FORCE)
get_property(type CACHE WrongD_DIR PROPERTY TYPE) get_property(type CACHE WrongD_DIR PROPERTY TYPE)
find_package(WrongD 1.3 EXACT QUIET NAMES Baz) find_package(WrongD 1.4 EXACT QUIET NAMES Baz)
# HINTS should override the system but PATHS should not # HINTS should override the system but PATHS should not
list(INSERT CMAKE_SYSTEM_PREFIX_PATH 0 "${CMAKE_CURRENT_SOURCE_DIR}/A") list(INSERT CMAKE_SYSTEM_PREFIX_PATH 0 "${CMAKE_CURRENT_SOURCE_DIR}/A")
@ -216,6 +221,9 @@ set(VersionedB_EXPECTED "lib/zot-3.1/zot-config.cmake")
set(VersionedC_EXPECTED "lib/cmake/zot-4.0/zot-config.cmake") set(VersionedC_EXPECTED "lib/cmake/zot-4.0/zot-config.cmake")
set(VersionedD_EXPECTED "Baz 1.1/BazConfig.cmake") set(VersionedD_EXPECTED "Baz 1.1/BazConfig.cmake")
set(VersionedE_EXPECTED "Baz 1.2/CMake/BazConfig.cmake") set(VersionedE_EXPECTED "Baz 1.2/CMake/BazConfig.cmake")
set(VersionedF_EXPECTED "Baz 1.3/lib/cmake/Baz/BazConfig.cmake")
set(VersionedG_EXPECTED "Baz 2.0/share/Baz 2/BazConfig.cmake")
set(VersionedH_EXPECTED "Baz 2.1/lib/Baz 2/cmake/BazConfig.cmake")
set(WrongA_EXPECTED "${VersionedE_EXPECTED}") set(WrongA_EXPECTED "${VersionedE_EXPECTED}")
set(WrongB_EXPECTED "${VersionedE_EXPECTED}") set(WrongB_EXPECTED "${VersionedE_EXPECTED}")
set(WrongC_MISSING "WrongC_DIR-NOTFOUND") set(WrongC_MISSING "WrongC_DIR-NOTFOUND")