[cmake-commits] alex committed cmFindBase.h 1.9 1.9.2.1
cmFindBase.cxx 1.19 1.19.2.1
cmake-commits at cmake.org
cmake-commits at cmake.org
Tue May 1 16:25:05 EDT 2007
Update of /cvsroot/CMake/CMake/Source
In directory public:/mounts/ram/cvs-serv20953
Modified Files:
Tag: CMake-CrossCompileBasic
cmFindBase.h cmFindBase.cxx
Log Message:
ENH: add support for CMAKE_FIND_PREFIX, for prepending a prefix before all
directories searched by FIND_XXX(), useful for defining a different root
directory for the base directory of the target platform
Alex
Index: cmFindBase.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmFindBase.h,v
retrieving revision 1.9
retrieving revision 1.9.2.1
diff -u -d -r1.9 -r1.9.2.1
--- cmFindBase.h 28 Dec 2006 20:31:47 -0000 1.9
+++ cmFindBase.h 1 May 2007 20:25:03 -0000 1.9.2.1
@@ -39,16 +39,20 @@
virtual const char* GetFullDocumentation()
{return this->GenericDocumentation.c_str();}
+ enum PrefixMode { PrefixModeBoth, PrefixModeOnlyPrefix, PrefixModeNoPrefix };
+
protected:
void PrintFindStuff();
void ExpandPaths(std::vector<std::string> userPaths);
+ void HandleCMakeFindPrefix();
+
// add to the SearchPaths
void AddPaths(std::vector<std::string>& paths);
void AddFrameWorkPaths();
void AddAppBundlePaths();
- void AddEnvironmentVairables();
- void AddCMakeVairables();
- void AddSystemEnvironmentVairables();
+ void AddEnvironmentVariables();
+ void AddCMakeVariables();
+ void AddSystemEnvironmentVariables();
void AddCMakeSystemVariables();
void ExpandRegistryAndCleanPath(std::vector<std::string>& paths);
// see if the VariableName is already set in the cache,
@@ -75,6 +79,7 @@
bool NoCMakeEnvironmentPath;
bool NoSystemEnvironmentPath;
bool NoCMakeSystemPath;
+ PrefixMode FindPrefixMode;
bool SearchFrameworkFirst;
bool SearchFrameworkOnly;
Index: cmFindBase.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmFindBase.cxx,v
retrieving revision 1.19
retrieving revision 1.19.2.1
diff -u -d -r1.19 -r1.19.2.1
--- cmFindBase.cxx 28 Dec 2006 20:31:47 -0000 1.19
+++ cmFindBase.cxx 1 May 2007 20:25:03 -0000 1.19.2.1
@@ -25,6 +25,7 @@
this->NoCMakeEnvironmentPath = false;
this->NoSystemEnvironmentPath = false;
this->NoCMakeSystemPath = false;
+ this->FindPrefixMode = PrefixModeBoth;
// default is to search frameworks first on apple
#if defined(__APPLE__)
this->SearchFrameworkFirst = true;
@@ -328,6 +329,16 @@
doingNames = false;
this->NoCMakeSystemPath = true;
}
+ else if (args[j] == "NO_CMAKE_FIND_PREFIX")
+ {
+ compatibility = false; // not sure, Alex
+ this->FindPrefixMode = PrefixModeNoPrefix;
+ }
+ else if (args[j] == "ONLY_CMAKE_FIND_PREFIX")
+ {
+ compatibility = false; // not sure, Alex
+ this->FindPrefixMode = PrefixModeOnlyPrefix;
+ }
else
{
if(doingNames)
@@ -358,7 +369,7 @@
if(this->VariableDocumentation.size() == 0)
{
- this->VariableDocumentation = "Whare can ";
+ this->VariableDocumentation = "Where can ";
if(this->Names.size() == 0)
{
this->VariableDocumentation += "the (unknown) library be found";
@@ -392,6 +403,8 @@
}
}
this->ExpandPaths(userPaths);
+
+ this->HandleCMakeFindPrefix();
return true;
}
@@ -413,7 +426,7 @@
!(this->SearchFrameworkOnly || this->SearchAppBundleOnly))
{
// Add CMAKE_*_PATH environment variables
- this->AddEnvironmentVairables();
+ this->AddEnvironmentVariables();
}
if(!this->NoCMakePath &&
!(this->SearchFrameworkOnly || this->SearchAppBundleOnly))
@@ -421,13 +434,13 @@
// Add CMake varibles of the same name as the previous environment
// varibles CMAKE_*_PATH to be used most of the time with -D
// command line options
- this->AddCMakeVairables();
+ this->AddCMakeVariables();
}
if(!this->NoSystemEnvironmentPath &&
!(this->SearchFrameworkOnly || this->SearchAppBundleOnly))
{
// add System environment PATH and (LIB or INCLUDE)
- this->AddSystemEnvironmentVairables();
+ this->AddSystemEnvironmentVariables();
}
if(!this->NoCMakeSystemPath &&
!(this->SearchFrameworkOnly || this->SearchAppBundleOnly))
@@ -453,7 +466,39 @@
this->AddPaths(paths);
}
-void cmFindBase::AddEnvironmentVairables()
+void cmFindBase::HandleCMakeFindPrefix()
+{
+ if (this->FindPrefixMode == PrefixModeNoPrefix)
+ {
+ return;
+ }
+
+ const char* prefix = this->Makefile->GetDefinition("CMAKE_FIND_PREFIX");
+ if ((prefix == 0) || (strlen(prefix) == 0))
+ {
+ return;
+ }
+
+ std::vector<std::string> unprefixedPaths=this->SearchPaths;
+ this->SearchPaths.clear();
+
+ std::vector<std::string>::iterator it;
+ for ( it = unprefixedPaths.begin();
+ it != unprefixedPaths.end();
+ ++it )
+ {
+ std::string prefixedDir=prefix;
+ prefixedDir+=*it;
+ this->SearchPaths.push_back(prefixedDir);
+ }
+
+ if (this->FindPrefixMode == PrefixModeBoth)
+ {
+ this->AddPaths(unprefixedPaths);
+ }
+}
+
+void cmFindBase::AddEnvironmentVariables()
{
std::string var = "CMAKE_";
var += this->CMakePathName;
@@ -547,7 +592,7 @@
this->AddPaths(paths);
}
-void cmFindBase::AddCMakeVairables()
+void cmFindBase::AddCMakeVariables()
{
std::string var = "CMAKE_";
var += this->CMakePathName;
@@ -576,7 +621,7 @@
this->AddPaths(paths);
}
-void cmFindBase::AddSystemEnvironmentVairables()
+void cmFindBase::AddSystemEnvironmentVariables()
{
// Add LIB or INCLUDE
std::vector<std::string> paths;
More information about the Cmake-commits
mailing list