summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
Diffstat (limited to 'Source')
-rw-r--r--Source/cmFindBase.cxx55
-rw-r--r--Source/cmFindBase.h2
-rw-r--r--Source/cmFindLibraryCommand.cxx2
-rw-r--r--Source/cmFindPathCommand.cxx2
-rw-r--r--Source/cmFindProgramCommand.cxx2
5 files changed, 61 insertions, 2 deletions
diff --git a/Source/cmFindBase.cxx b/Source/cmFindBase.cxx
index b95cb89..00927f4 100644
--- a/Source/cmFindBase.cxx
+++ b/Source/cmFindBase.cxx
@@ -83,6 +83,7 @@ cmFindBase::cmFindBase()
"1. Search cmake specific environment variables. This "
"can be skipped if NO_CMAKE_ENVIRONMENT_PATH is passed.\n"
""
+ " CMAKE_FIND_PREFIX_PATH/XXX_SUBDIR\n"
" CMAKE_FRAMEWORK_PATH\n"
" CMAKE_APPBUNDLE_PATH\n"
" CMAKE_XXX_PATH\n"
@@ -92,6 +93,7 @@ cmFindBase::cmFindBase()
"-DVAR=value. This can be skipped if NO_CMAKE_PATH "
"is passed.\n"
""
+ " CMAKE_FIND_PREFIX_PATH/XXX_SUBDIR\n"
" CMAKE_FRAMEWORK_PATH\n"
" CMAKE_APPBUNDLE_PATH\n"
" CMAKE_XXX_PATH\n"
@@ -546,10 +548,15 @@ void cmFindBase::HandleCMakeFindRootPath()
void cmFindBase::AddEnvironmentVariables()
{
+ std::vector<std::string> paths;
+
+ std::vector<std::string> prefixPaths;
+ cmSystemTools::GetPath(prefixPaths, "CMAKE_FIND_PREFIX_PATH");
+ this->AddFindPrefix(paths, prefixPaths);
+
std::string var = "CMAKE_";
var += this->CMakePathName;
var += "_PATH";
- std::vector<std::string> paths;
cmSystemTools::GetPath(paths, var.c_str());
if(this->SearchAppBundleLast)
{
@@ -559,7 +566,42 @@ void cmFindBase::AddEnvironmentVariables()
{
cmSystemTools::GetPath(paths, "CMAKE_FRAMEWORK_PATH");
}
- this->AddPaths(paths);
+ this->AddPaths(paths);
+}
+
+void cmFindBase::AddFindPrefix(std::vector<std::string>& dest,
+ const std::vector<std::string>& src)
+{
+ // default for programs
+ std::string subdir = "/bin";
+
+ if (this->CMakePathName == "INCLUDE")
+ {
+ subdir = "/include";
+ }
+ else if (this->CMakePathName == "LIBRARY")
+ {
+ subdir = "/lib";
+ }
+ else if (this->CMakePathName == "FRAMEWORK")
+ {
+ subdir = ""; // ? what to do for frameworks ?
+ }
+
+ for (std::vector<std::string>::const_iterator it = src.begin();
+ it != src.end();
+ ++it)
+ {
+ std::string dirWithSubdir = it->c_str();
+ dirWithSubdir += subdir;
+ dest.push_back(dirWithSubdir);
+ if (subdir == "/bin")
+ {
+ dirWithSubdir = it->c_str();
+ dirWithSubdir += "/sbin";
+ dest.push_back(dirWithSubdir);
+ }
+ }
}
void cmFindBase::AddFrameWorkPaths()
@@ -644,6 +686,15 @@ void cmFindBase::AddCMakeVariables()
var += this->CMakePathName;
var += "_PATH";
std::vector<std::string> paths;
+
+ if(const char* prefixPath =
+ this->Makefile->GetDefinition("CMAKE_FIND_PREFIX_PATH"))
+ {
+ std::vector<std::string> prefixPaths;
+ cmSystemTools::ExpandListArgument(prefixPath, prefixPaths);
+ this->AddFindPrefix(paths, prefixPaths);
+ }
+
if(const char* path = this->Makefile->GetDefinition(var.c_str()))
{
cmSystemTools::ExpandListArgument(path, paths);
diff --git a/Source/cmFindBase.h b/Source/cmFindBase.h
index 547576d..5efbe2a 100644
--- a/Source/cmFindBase.h
+++ b/Source/cmFindBase.h
@@ -53,6 +53,8 @@ protected:
void AddFrameWorkPaths();
void AddAppBundlePaths();
void AddEnvironmentVariables();
+ void AddFindPrefix(std::vector<std::string>& dest,
+ const std::vector<std::string>& src);
void AddCMakeVariables();
void AddSystemEnvironmentVariables();
void AddCMakeSystemVariables();
diff --git a/Source/cmFindLibraryCommand.cxx b/Source/cmFindLibraryCommand.cxx
index 7971221..208ed02 100644
--- a/Source/cmFindLibraryCommand.cxx
+++ b/Source/cmFindLibraryCommand.cxx
@@ -33,6 +33,8 @@ cmFindLibraryCommand::cmFindLibraryCommand()
cmSystemTools::ReplaceString(this->GenericDocumentation,
"SEARCH_XXX", "library");
cmSystemTools::ReplaceString(this->GenericDocumentation,
+ "XXX_SUBDIR", "lib");
+ cmSystemTools::ReplaceString(this->GenericDocumentation,
"CMAKE_FIND_ROOT_PATH_MODE_XXX",
"CMAKE_FIND_ROOT_PATH_MODE_LIBRARY");
diff --git a/Source/cmFindPathCommand.cxx b/Source/cmFindPathCommand.cxx
index 1210b3b..80d0b10 100644
--- a/Source/cmFindPathCommand.cxx
+++ b/Source/cmFindPathCommand.cxx
@@ -37,6 +37,8 @@ cmFindPathCommand::cmFindPathCommand()
cmSystemTools::ReplaceString(this->GenericDocumentation,
"SEARCH_XXX", "file in a directory");
cmSystemTools::ReplaceString(this->GenericDocumentation,
+ "XXX_SUBDIR", "include");
+ cmSystemTools::ReplaceString(this->GenericDocumentation,
"CMAKE_FIND_ROOT_PATH_MODE_XXX",
"CMAKE_FIND_ROOT_PATH_MODE_INCLUDE");
diff --git a/Source/cmFindProgramCommand.cxx b/Source/cmFindProgramCommand.cxx
index f1b8135..fb563e2 100644
--- a/Source/cmFindProgramCommand.cxx
+++ b/Source/cmFindProgramCommand.cxx
@@ -38,6 +38,8 @@ cmFindProgramCommand::cmFindProgramCommand()
cmSystemTools::ReplaceString(this->GenericDocumentation,
"SEARCH_XXX", "program");
cmSystemTools::ReplaceString(this->GenericDocumentation,
+ "XXX_SUBDIR", "[s]bin");
+ cmSystemTools::ReplaceString(this->GenericDocumentation,
"CMAKE_FIND_ROOT_PATH_MODE_XXX",
"CMAKE_FIND_ROOT_PATH_MODE_PROGRAM");
}