From e51969ac4935999779be2cb8b74a06b218d73dd0 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 9 Dec 2008 14:07:19 -0500 Subject: ENH: Add useful search locations to find_package This teaches find_package to search /(share|lib)/cmake/*/ for package configuration files. Packages that do not already have files in a /lib/* directory can use this location to avoid cluttering the lib directory. --- Source/cmFindPackageCommand.cxx | 15 +++++++++++++++ Tests/FindPackageTest/CMakeLists.txt | 4 ++-- .../lib/cmake/zot-3.1/zot-config-version.cmake | 8 ++++++++ Tests/FindPackageTest/lib/cmake/zot-3.1/zot-config.cmake | 1 + .../FindPackageTest/lib/zot-3.1/zot-config-version.cmake | 8 -------- Tests/FindPackageTest/lib/zot-3.1/zot-config.cmake | 1 - 6 files changed, 26 insertions(+), 11 deletions(-) create mode 100644 Tests/FindPackageTest/lib/cmake/zot-3.1/zot-config-version.cmake create mode 100644 Tests/FindPackageTest/lib/cmake/zot-3.1/zot-config.cmake delete mode 100644 Tests/FindPackageTest/lib/zot-3.1/zot-config-version.cmake delete mode 100644 Tests/FindPackageTest/lib/zot-3.1/zot-config.cmake diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx index 7c326ff..78b73fd 100644 --- a/Source/cmFindPackageCommand.cxx +++ b/Source/cmFindPackageCommand.cxx @@ -222,6 +222,7 @@ cmFindPackageCommand::cmFindPackageCommand() "UNIX (U), or Apple (A) conventions.\n" " / (W)\n" " /(cmake|CMake)/ (W)\n" + " /(share|lib)/cmake/*/ (U)\n" " /(share|lib)/*/ (U)\n" " /(share|lib)/*/(cmake|CMake)/ (U)\n" "On systems supporting OS X Frameworks and Application Bundles " @@ -1789,6 +1790,20 @@ bool cmFindPackageCommand::SearchPrefix(std::string const& prefix_in) common.push_back("lib"); common.push_back("share"); + // PREFIX/(share|lib)/cmake/(Foo|foo|FOO).*/ + { + cmFindPackageFileList lister(this); + lister + / cmFileListGeneratorFixed(prefix) + / cmFileListGeneratorEnumerate(common) + / cmFileListGeneratorFixed("cmake") + / cmFileListGeneratorProject(this->Names); + if(lister.Search()) + { + return true; + } + } + // PREFIX/(share|lib)/(Foo|foo|FOO).*/ { cmFindPackageFileList lister(this); diff --git a/Tests/FindPackageTest/CMakeLists.txt b/Tests/FindPackageTest/CMakeLists.txt index 62a4dc7..b6691e7 100644 --- a/Tests/FindPackageTest/CMakeLists.txt +++ b/Tests/FindPackageTest/CMakeLists.txt @@ -85,12 +85,12 @@ SET(TApp_EXPECTED SET(Tapp_EXPECTED "TApp.app/Contents/Resources/cmake/tapp-config.cmake") SET(VersionedA_EXPECTED "lib/zot-2.0/zot-config.cmake") -SET(VersionedB_EXPECTED "lib/zot-3.1/zot-config.cmake") +SET(VersionedB_EXPECTED "lib/cmake/zot-3.1/zot-config.cmake") SET(wibbleA_EXPECTED "A/wibble-config.cmake") SET(wibbleB_EXPECTED "B/wibble-config.cmake") SET(RecursiveA_EXPECTED "lib/RecursiveA/recursivea-config.cmake") SET(RecursiveB_EXPECTED "lib/zot-2.0/zot-config.cmake") -SET(RecursiveC_EXPECTED "lib/zot-3.1/zot-config.cmake") +SET(RecursiveC_EXPECTED "lib/cmake/zot-3.1/zot-config.cmake") # Check the results. FOREACH(p ${PACKAGES}) diff --git a/Tests/FindPackageTest/lib/cmake/zot-3.1/zot-config-version.cmake b/Tests/FindPackageTest/lib/cmake/zot-3.1/zot-config-version.cmake new file mode 100644 index 0000000..b54d94c --- /dev/null +++ b/Tests/FindPackageTest/lib/cmake/zot-3.1/zot-config-version.cmake @@ -0,0 +1,8 @@ +SET(PACKAGE_VERSION 3.1) +IF("${PACKAGE_FIND_VERSION_MAJOR}" EQUAL 3) + SET(PACKAGE_VERSION_COMPATIBLE 1) + IF("${PACKAGE_FIND_VERSION_MINOR}" EQUAL 1) + SET(PACKAGE_VERSION_EXACT 1) + ENDIF("${PACKAGE_FIND_VERSION_MINOR}" EQUAL 1) +ENDIF("${PACKAGE_FIND_VERSION_MAJOR}" EQUAL 3) + diff --git a/Tests/FindPackageTest/lib/cmake/zot-3.1/zot-config.cmake b/Tests/FindPackageTest/lib/cmake/zot-3.1/zot-config.cmake new file mode 100644 index 0000000..deffa57 --- /dev/null +++ b/Tests/FindPackageTest/lib/cmake/zot-3.1/zot-config.cmake @@ -0,0 +1 @@ +# Test config file. diff --git a/Tests/FindPackageTest/lib/zot-3.1/zot-config-version.cmake b/Tests/FindPackageTest/lib/zot-3.1/zot-config-version.cmake deleted file mode 100644 index b54d94c..0000000 --- a/Tests/FindPackageTest/lib/zot-3.1/zot-config-version.cmake +++ /dev/null @@ -1,8 +0,0 @@ -SET(PACKAGE_VERSION 3.1) -IF("${PACKAGE_FIND_VERSION_MAJOR}" EQUAL 3) - SET(PACKAGE_VERSION_COMPATIBLE 1) - IF("${PACKAGE_FIND_VERSION_MINOR}" EQUAL 1) - SET(PACKAGE_VERSION_EXACT 1) - ENDIF("${PACKAGE_FIND_VERSION_MINOR}" EQUAL 1) -ENDIF("${PACKAGE_FIND_VERSION_MAJOR}" EQUAL 3) - diff --git a/Tests/FindPackageTest/lib/zot-3.1/zot-config.cmake b/Tests/FindPackageTest/lib/zot-3.1/zot-config.cmake deleted file mode 100644 index deffa57..0000000 --- a/Tests/FindPackageTest/lib/zot-3.1/zot-config.cmake +++ /dev/null @@ -1 +0,0 @@ -# Test config file. -- cgit v0.12