summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2006-03-29 18:33:49 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2006-03-29 18:33:49 (GMT)
commit4fd3292d04a8d6934d2d821767bf26baf7deaa90 (patch)
tree7e1b3f452d381529e6b3a0040d9d87983c2d1d82
parent388c005ccdf620cabe34fabcb6715a86962f5333 (diff)
downloadCMake-4fd3292d04a8d6934d2d821767bf26baf7deaa90.zip
CMake-4fd3292d04a8d6934d2d821767bf26baf7deaa90.tar.gz
CMake-4fd3292d04a8d6934d2d821767bf26baf7deaa90.tar.bz2
ENH: add a test for find framework stuff in find_library, and fix the framework search stuff
-rw-r--r--Source/cmFindBase.cxx28
-rw-r--r--Tests/BundleTest/CMakeLists.txt31
2 files changed, 59 insertions, 0 deletions
diff --git a/Source/cmFindBase.cxx b/Source/cmFindBase.cxx
index e9ac5f6..eae6186 100644
--- a/Source/cmFindBase.cxx
+++ b/Source/cmFindBase.cxx
@@ -116,6 +116,31 @@ bool cmFindBase::ParseArguments(std::vector<std::string> const& argsIn)
this->SetError("called with incorrect number of arguments");
return false;
}
+ std::string ff = this->Makefile->GetSafeDefinition("CMAKE_FIND_FRAMEWORK");
+ if(ff == "NEVER")
+ {
+ this->SearchFrameworkLast = false;
+ this->SearchFrameworkFirst = false;
+ this->SearchFrameworkOnly = false;
+ }
+ else if (ff == "ONLY")
+ {
+ this->SearchFrameworkLast = false;
+ this->SearchFrameworkFirst = false;
+ this->SearchFrameworkOnly = true;
+ }
+ else if (ff == "FIRST")
+ {
+ this->SearchFrameworkLast = false;
+ this->SearchFrameworkFirst = true;
+ this->SearchFrameworkOnly = false;
+ }
+ else if (ff == "LAST")
+ {
+ this->SearchFrameworkLast = true;
+ this->SearchFrameworkFirst = false;
+ this->SearchFrameworkOnly = false;
+ }
// CMake versions below 2.3 did not search all these extra
// locations. Preserve compatibility unless a modern argument is
@@ -479,6 +504,9 @@ void cmFindBase::ExpandRegistryAndCleanPath()
void cmFindBase::PrintFindStuff()
{
+ std::cerr << "SearchFrameworkLast: " << this->SearchFrameworkLast << "\n";
+ std::cerr << "SearchFrameworkOnly: " << this->SearchFrameworkOnly << "\n";
+ std::cerr << "SearchFrameworkFirst: " << this->SearchFrameworkFirst << "\n";
std::cerr << "VariableName " << this->VariableName << "\n";
std::cerr << "VariableDocumentation " << this->VariableDocumentation << "\n";
std::cerr << "NoDefaultPath " << this->NoDefaultPath << "\n";
diff --git a/Tests/BundleTest/CMakeLists.txt b/Tests/BundleTest/CMakeLists.txt
index 1e90566..57ebd24 100644
--- a/Tests/BundleTest/CMakeLists.txt
+++ b/Tests/BundleTest/CMakeLists.txt
@@ -54,3 +54,34 @@ SET_TARGET_PROPERTIES(BundleTestLib PROPERTIES
INCLUDE(CPack)
+# test the framework find stuff
+IF(EXISTS /usr/lib/libtcl.dylib
+ AND EXISTS /System/Library/Frameworks/tcl.framework)
+ SET(TCL NOTFOUND)
+ FIND_LIBRARY(TCL tcl)
+ MESSAGE("frame: ${TCL}")
+ IF(NOT "${TCL}" MATCHES .framework)
+ MESSAGE(FATAL_ERROR "Could not find tcl framework, found ${TCL}")
+ ENDIF(NOT "${TCL}" MATCHES .framework)
+ SET(TCL NOTFOUND)
+ SET(CMAKE_FIND_FRAMEWORK LAST)
+ FIND_LIBRARY(TCL tcl)
+ IF("${TCL}" MATCHES .framework)
+ MESSAGE(FATAL_ERROR "Found framework and should have found dylib ${TCL}")
+ ENDIF("${TCL}" MATCHES .framework)
+ SET(TCL NOTFOUND)
+ SET(CMAKE_FIND_FRAMEWORK NEVER)
+ FIND_LIBRARY(TCL tcl)
+ IF("${TCL}" MATCHES .framework)
+ MESSAGE(FATAL_ERROR "Found framework and should have found dylib ${TCL}")
+ ENDIF("${TCL}" MATCHES .framework)
+ MESSAGE("not frame: ${TCL}")
+ SET(TCL NOTFOUND)
+ SET(CMAKE_FIND_FRAMEWORK FIRST)
+ FIND_LIBRARY(TCL tcl)
+ IF(NOT "${TCL}" MATCHES .framework)
+ MESSAGE(FATAL_ERROR "Could not find tcl framework, found ${TCL}")
+ ENDIF(NOT "${TCL}" MATCHES .framework)
+ MESSAGE("frame: ${TCL}")
+ENDIF(EXISTS /usr/lib/libtcl.dylib
+ AND EXISTS /System/Library/Frameworks/tcl.framework)