summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2006-03-24 19:16:31 (GMT)
committerBrad King <brad.king@kitware.com>2006-03-24 19:16:31 (GMT)
commit3731dff1279df560557a6c6dc47bd89e1901e81e (patch)
treeb1a3f626836a650c964807dc115f0b2888f177e6 /Source
parenta59dd5d4c388c33d459c2a87ffe75d4e3242ff41 (diff)
downloadCMake-3731dff1279df560557a6c6dc47bd89e1901e81e.zip
CMake-3731dff1279df560557a6c6dc47bd89e1901e81e.tar.gz
CMake-3731dff1279df560557a6c6dc47bd89e1901e81e.tar.bz2
ENH: Added NO_CMAKE_ENVIRONMENT_PATH, NO_CMAKE_PATH, NO_SYSTEM_ENVIRONMENT_PATH, and NO_CMAKE_SYSTEM_PATH options back to allow more granularity than NO_DEFAULT_PATH.
Diffstat (limited to 'Source')
-rw-r--r--Source/cmFindBase.cxx83
-rw-r--r--Source/cmFindBase.h4
2 files changed, 70 insertions, 17 deletions
diff --git a/Source/cmFindBase.cxx b/Source/cmFindBase.cxx
index 5cd5443..0f68ae6 100644
--- a/Source/cmFindBase.cxx
+++ b/Source/cmFindBase.cxx
@@ -20,11 +20,15 @@ cmFindBase::cmFindBase()
{
this->AlreadyInCache = false;
this->NoDefaultPath = false;
+ this->NoCMakePath = false;
+ this->NoCMakeEnvironmentPath = false;
+ this->NoSystemEnvironmentPath = false;
+ this->NoCMakeSystemPath = false;
// default is to search frameworks first on apple
#if defined(__APPLE__)
this->SearchFrameworkFirst = true;
#else
- this->SearchFrameworkFirst = false;
+ this->SearchFrameworkFirst = false;
#endif
this->SearchFrameworkOnly = false;
this->SearchFrameworkLast = false;
@@ -40,6 +44,10 @@ cmFindBase::cmFindBase()
" [PATH_SUFFIXES suffix1 [suffix2 ...]]\n"
" [DOC \"cache documentation string\"]\n"
" [NO_DEFAULT_PATH]\n"
+ " [NO_CMAKE_ENVIRONMENT_PATH]\n"
+ " [NO_CMAKE_PATH]\n"
+ " [NO_SYSTEM_ENVIRONMENT_PATH]\n"
+ " [NO_CMAKE_SYSTEM_PATH]\n"
" )\n"
""
"This command is used to find a SEARCH_XXX_DESC. "
@@ -59,22 +67,26 @@ cmFindBase::cmFindBase()
"If NO_DEFAULT_PATH is specified, then no additional paths are "
"added to the search. "
"If NO_DEFAULT_PATH is not specified, the search process is as follows:\n"
- "1. Search cmake specific environment variables."
+ "1. Search cmake specific environment variables. This "
+ "can be skipped if NO_CMAKE_ENVIRONMENT_PATH is passed.\n"
""
" CMAKE_FRAMEWORK_PATH\n"
" CMAKE_XXX_PATH\n"
"2. Search cmake variables with the same names as "
"the cmake specific environment variables. These "
"are intended to be used on the command line with a "
- "-DVAR=value. \n"
+ "-DVAR=value. This can be skipped if NO_CMAKE_PATH "
+ "is passed.\n"
""
" CMAKE_FRAMEWORK_PATH\n"
" CMAKE_XXX_PATH\n"
"3. Search the standard system environment variables. "
+ "This can be skipped if NO_SYSTEM_ENVIRONMENT_PATH is an argument.\n"
" PATH\n"
" XXX_SYSTEM\n" // replace with "", LIB, or INCLUDE
"4. Search cmake variables defined in the Platform files "
- "for the current system. \n"
+ "for the current system. This can be skipped if NO_CMAKE_SYSTEM_PATH "
+ "is passed.\n"
" CMAKE_SYSTEM_FRAMEWORK_PATH\n"
" CMAKE_SYSTEM_XXX_PATH\n"
"5. Search the paths specified after PATHS or in the short-hand version "
@@ -169,19 +181,40 @@ bool cmFindBase::ParseArguments(std::vector<std::string> const& argsIn)
doingNames = false;
doingPaths = false;
}
- else if (args[j] == "NO_SYSTEM_PATH")
+ else if (args[j] == "NO_DEFAULT_PATH" || args[j] == "NO_SYSTEM_PATH")
{
doingPaths = false;
doingPathSuf = false;
doingNames = false;
this->NoDefaultPath = true;
}
- else if (args[j] == "NO_DEFAULT_PATH")
+ else if (args[j] == "NO_CMAKE_ENVIRONMENT_PATH")
{
doingPaths = false;
doingPathSuf = false;
doingNames = false;
- this->NoDefaultPath = true;
+ this->NoCMakeEnvironmentPath = true;
+ }
+ else if (args[j] == "NO_CMAKE_PATH")
+ {
+ doingPaths = false;
+ doingPathSuf = false;
+ doingNames = false;
+ this->NoCMakePath = true;
+ }
+ else if (args[j] == "NO_SYSTEM_ENVIRONMENT_PATH")
+ {
+ doingPaths = false;
+ doingPathSuf = false;
+ doingNames = false;
+ this->NoSystemEnvironmentPath = true;
+ }
+ else if (args[j] == "NO_CMAKE_SYSTEM_PATH")
+ {
+ doingPaths = false;
+ doingPathSuf = false;
+ doingNames = false;
+ this->NoCMakeSystemPath = true;
}
else
{
@@ -242,16 +275,28 @@ void cmFindBase::ExpandPaths(std::vector<std::string> userPaths)
// standard search paths.
if(!this->NoDefaultPath)
{
- // Add CMAKE_*_PATH environment variables
- this->AddEnvironmentVairables();
- // 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();
- // add System environment PATH and (LIB or INCLUDE)
- this->AddSystemEnvironmentVairables();
- // Add CMAKE_SYSTEM_*_PATH variables which are defined in platform files
- this->AddCMakeSystemVariables();
+ if(!this->NoCMakeEnvironmentPath)
+ {
+ // Add CMAKE_*_PATH environment variables
+ this->AddEnvironmentVairables();
+ }
+ if(!this->NoCMakePath)
+ {
+ // 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();
+ }
+ if(!this->NoSystemEnvironmentPath)
+ {
+ // add System environment PATH and (LIB or INCLUDE)
+ this->AddSystemEnvironmentVairables();
+ }
+ if(!this->NoCMakeSystemPath)
+ {
+ // Add CMAKE_SYSTEM_*_PATH variables which are defined in platform files
+ this->AddCMakeSystemVariables();
+ }
}
// add the paths specified in the FIND_* call
for(unsigned int i =0; i < userPaths.size(); ++i)
@@ -386,6 +431,10 @@ void cmFindBase::PrintFindStuff()
std::cerr << "VariableName " << this->VariableName << "\n";
std::cerr << "VariableDocumentation " << this->VariableDocumentation << "\n";
std::cerr << "NoDefaultPath " << this->NoDefaultPath << "\n";
+ std::cerr << "NoCMakeEnvironmentPath " << this->NoCMakeEnvironmentPath << "\n";
+ std::cerr << "NoCMakePath " << this->NoCMakePath << "\n";
+ std::cerr << "NoSystemEnvironmentPath " << this->NoSystemEnvironmentPath << "\n";
+ std::cerr << "NoCMakeSystemPath " << this->NoCMakeSystemPath << "\n";
std::cerr << "EnvironmentPath " << this->EnvironmentPath << "\n";
std::cerr << "CMakePathName " << this->CMakePathName << "\n";
std::cerr << "Names ";
diff --git a/Source/cmFindBase.h b/Source/cmFindBase.h
index 2410492..7e8d05c 100644
--- a/Source/cmFindBase.h
+++ b/Source/cmFindBase.h
@@ -66,6 +66,10 @@ protected:
bool AlreadyInCache;
bool NoDefaultPath;
+ bool NoCMakePath;
+ bool NoCMakeEnvironmentPath;
+ bool NoSystemEnvironmentPath;
+ bool NoCMakeSystemPath;
bool SearchFrameworkFirst;
bool SearchFrameworkOnly;