From 14606c99020c658d4751138d4d9a48fd290d0cda Mon Sep 17 00:00:00 2001 From: Bill Hoffman Date: Fri, 30 Dec 2005 21:54:26 -0500 Subject: [PATCH] ENH: move framework stuff from FindFile to FindPath --- Source/cmFindFileCommand.cxx | 79 ---------------------------------- Source/cmFindFileCommand.h | 2 - Source/cmFindPathCommand.cxx | 82 +++++++++++++++++++++++++++++++++++- Source/cmFindPathCommand.h | 4 +- 4 files changed, 84 insertions(+), 83 deletions(-) diff --git a/Source/cmFindFileCommand.cxx b/Source/cmFindFileCommand.cxx index 465d554d5..30c481b51 100644 --- a/Source/cmFindFileCommand.cxx +++ b/Source/cmFindFileCommand.cxx @@ -89,17 +89,6 @@ bool cmFindFileCommand::InitialPass(std::vector const& argsIn) return true; } } -#if defined (__APPLE__) - cmStdString fpath = this->FindHeaderInFrameworks(path, args[0].c_str(), args[1].c_str()); - if(fpath.size()) - { - m_Makefile->AddCacheDefinition(args[0].c_str(), - fpath.c_str(), - helpString.c_str(), - cmCacheManager::FILEPATH); - return true; - } -#endif std::string s = args[0] + "-NOTFOUND"; m_Makefile->AddCacheDefinition(args[0].c_str(), s.c_str(), @@ -108,71 +97,3 @@ bool cmFindFileCommand::InitialPass(std::vector const& argsIn) return true; } -cmStdString cmFindFileCommand::FindHeaderInFrameworks( - std::vector path, - const char* defineVar, - const char* file) -{ - (void)defineVar; - -#ifndef __APPLE__ - (void)path; - (void)file; - return cmStdString(""); -#else - cmStdString fileName = file; - cmStdString frameWorkName; - cmStdString::size_type pos = fileName.find("/"); - std::cerr << "ff " << fileName << " " << pos << "\n"; - if(pos != fileName.npos) - { - // remove the name from the slash; - fileName = fileName.substr(pos+1); - frameWorkName = file; - frameWorkName = frameWorkName.substr(0, frameWorkName.size()-fileName.size()-1); - // if the framework has a path in it then just use the filename - std::cerr << fileName << " " << frameWorkName << "\n"; - if(frameWorkName.find("/") != frameWorkName.npos) - { - fileName = file; - frameWorkName = ""; - } - } - path.push_back("~/Library/Frameworks"); - path.push_back("/Library/Frameworks"); - path.push_back("/System/Library/Frameworks"); - path.push_back("/Network/Library/Frameworks"); - for( std::vector::iterator i = path.begin(); - i != path.end(); ++i) - { - if(frameWorkName.size()) - { - std::string fpath = *i; - fpath += "/"; - fpath += frameWorkName; - fpath += ".framework"; - std::string intPath = fpath; - intPath += "/Headers/"; - intPath += fileName; - std::cerr << "try " << intPath << "\n"; - if(cmSystemTools::FileExists(intPath.c_str())) - { - return fpath; - } - } - cmStdString glob = *i; - glob += "/*/Headers/"; - glob += file; - cmGlob globIt; - globIt.FindFiles(glob); - std::vector files = globIt.GetFiles(); - if(files.size()) - { - cmStdString fheader = cmSystemTools::CollapseFullPath(files[0].c_str()); - fheader = cmSystemTools::GetFilenamePath(fheader); - return fheader; - } - } - return cmStdString(""); -#endif -} diff --git a/Source/cmFindFileCommand.h b/Source/cmFindFileCommand.h index e5fb661ba..1d4a600f5 100644 --- a/Source/cmFindFileCommand.h +++ b/Source/cmFindFileCommand.h @@ -79,8 +79,6 @@ public: "different extensions on different platforms, FIND_PROGRAM " "should be used instead of FIND_FILE when looking for them."; } - cmStdString FindHeaderInFrameworks( std::vector path, - const char* var, const char* file); cmTypeMacro(cmFindFileCommand, cmCommand); }; diff --git a/Source/cmFindPathCommand.cxx b/Source/cmFindPathCommand.cxx index d454715e1..68da096db 100644 --- a/Source/cmFindPathCommand.cxx +++ b/Source/cmFindPathCommand.cxx @@ -98,7 +98,18 @@ bool cmFindPathCommand::InitialPass(std::vector const& argsIn) return true; } } - +#if defined (__APPLE__) + cmStdString fpath = this->FindHeaderInFrameworks(path, args[0].c_str(), args[1].c_str()); + if(fpath.size()) + { + m_Makefile->AddCacheDefinition(args[0].c_str(), + fpath.c_str(), + helpString.c_str(), + cmCacheManager::FILEPATH); + return true; + } +#endif + m_Makefile->AddCacheDefinition(args[0].c_str(), (args[0] + "-NOTFOUND").c_str(), helpString.c_str(), @@ -106,3 +117,72 @@ bool cmFindPathCommand::InitialPass(std::vector const& argsIn) return true; } +cmStdString cmFindPathCommand::FindHeaderInFrameworks( + std::vector path, + const char* defineVar, + const char* file) +{ + (void)defineVar; + +#ifndef __APPLE__ + (void)path; + (void)file; + return cmStdString(""); +#else + cmStdString fileName = file; + cmStdString frameWorkName; + cmStdString::size_type pos = fileName.find("/"); + std::cerr << "ff " << fileName << " " << pos << "\n"; + if(pos != fileName.npos) + { + // remove the name from the slash; + fileName = fileName.substr(pos+1); + frameWorkName = file; + frameWorkName = frameWorkName.substr(0, frameWorkName.size()-fileName.size()-1); + // if the framework has a path in it then just use the filename + std::cerr << fileName << " " << frameWorkName << "\n"; + if(frameWorkName.find("/") != frameWorkName.npos) + { + fileName = file; + frameWorkName = ""; + } + } + path.push_back("~/Library/Frameworks"); + path.push_back("/Library/Frameworks"); + path.push_back("/System/Library/Frameworks"); + path.push_back("/Network/Library/Frameworks"); + for( std::vector::iterator i = path.begin(); + i != path.end(); ++i) + { + if(frameWorkName.size()) + { + std::string fpath = *i; + fpath += "/"; + fpath += frameWorkName; + fpath += ".framework"; + std::string intPath = fpath; + intPath += "/Headers/"; + intPath += fileName; + std::cerr << "try " << intPath << "\n"; + if(cmSystemTools::FileExists(intPath.c_str())) + { + return fpath; + } + } + cmStdString glob = *i; + glob += "/*/Headers/"; + glob += file; + cmGlob globIt; + globIt.FindFiles(glob); + std::vector files = globIt.GetFiles(); + if(files.size()) + { + cmStdString fheader = cmSystemTools::CollapseFullPath(files[0].c_str()); + fheader = cmSystemTools::GetFilenamePath(fheader); + return fheader; + } + } + return cmStdString(""); +#endif + +} diff --git a/Source/cmFindPathCommand.h b/Source/cmFindPathCommand.h index 6553ca0d5..17e431ba1 100644 --- a/Source/cmFindPathCommand.h +++ b/Source/cmFindPathCommand.h @@ -78,7 +78,9 @@ public: "the cache entry . The environment variable CMAKE_INCLUDE_PATH " "is searched as well as the PATH variable.\n"; } - + cmStdString FindHeaderInFrameworks( std::vector path, + const char* var, const char* file); + cmTypeMacro(cmFindPathCommand, cmCommand); };