diff options
Diffstat (limited to 'Source/cmFindCommon.h')
-rw-r--r-- | Source/cmFindCommon.h | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/Source/cmFindCommon.h b/Source/cmFindCommon.h new file mode 100644 index 0000000..962a017 --- /dev/null +++ b/Source/cmFindCommon.h @@ -0,0 +1,95 @@ +/*========================================================================= + + Program: CMake - Cross-Platform Makefile Generator + Module: $RCSfile$ + Language: C++ + Date: $Date$ + Version: $Revision$ + + Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. + See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#ifndef cmFindCommon_h +#define cmFindCommon_h + +#include "cmCommand.h" + +/** \class cmFindCommon + * \brief Base class for FIND_XXX implementations. + * + * cmFindCommon is a parent class for cmFindBase, + * cmFindProgramCommand, cmFindPathCommand, cmFindLibraryCommand, + * cmFindFileCommand, and cmFindPackageCommand. + */ +class cmFindCommon : public cmCommand +{ +public: + cmFindCommon(); + ~cmFindCommon(); + cmTypeMacro(cmFindCommon, cmCommand); + +protected: + + enum RootPathMode { RootPathModeBoth, + RootPathModeOnlyRootPath, + RootPathModeNoRootPath }; + + enum PathType { FullPath, CMakePath, EnvPath }; + + /** Place a set of search paths under the search roots. */ + void RerootPaths(std::vector<std::string>& paths); + + /** Compute the current default root path mode. */ + void SelectDefaultRootPathMode(); + + /** Compute the current default bundle/framework search policy. */ + void SelectDefaultMacMode(); + + cmStdString CMakePathName; + RootPathMode FindRootPathMode; + + bool CheckCommonArgument(std::string const& arg); + void AddPathSuffix(std::string const& arg); + void GetAppBundlePaths(std::vector<std::string>& paths); + void GetFrameworkPaths(std::vector<std::string>& paths); + + void AddCMakePath(std::vector<std::string>& out_paths, + const char* variable, std::set<cmStdString>* emmitted = 0); + void AddEnvPath(std::vector<std::string>& out_paths, + const char* variable, std::set<cmStdString>* emmitted = 0); + void AddPathsInternal(std::vector<std::string>& out_paths, + std::vector<std::string> const& in_paths, + PathType pathType, + std::set<cmStdString>* emmitted = 0); + void AddPathInternal(std::vector<std::string>& out_paths, + std::string const& in_path, + PathType pathType, + std::set<cmStdString>* emmitted = 0); + + bool NoDefaultPath; + bool NoCMakePath; + bool NoCMakeEnvironmentPath; + bool NoSystemEnvironmentPath; + bool NoCMakeSystemPath; + + std::vector<std::string> SearchPathSuffixes; + + std::string GenericDocumentationMacPolicy; + std::string GenericDocumentationRootPath; + std::string GenericDocumentationPathsOrder; + + bool SearchFrameworkFirst; + bool SearchFrameworkOnly; + bool SearchFrameworkLast; + + bool SearchAppBundleFirst; + bool SearchAppBundleOnly; + bool SearchAppBundleLast; +}; + +#endif |