/*========================================================================= 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& 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 AddUserPath(std::string const& p); void AddCMakePath(const char* variable); void AddEnvPath(const char* variable); void AddPathsInternal(std::vector const& in_paths, PathType pathType); void AddPathInternal(std::string const& in_path, PathType pathType); bool NoDefaultPath; bool NoCMakePath; bool NoCMakeEnvironmentPath; bool NoSystemEnvironmentPath; bool NoCMakeSystemPath; std::vector SearchPathSuffixes; std::vector UserPaths; std::vector SearchPaths; std::set SearchPathsEmitted; std::string GenericDocumentationMacPolicy; std::string GenericDocumentationRootPath; std::string GenericDocumentationPathsOrder; bool SearchFrameworkFirst; bool SearchFrameworkOnly; bool SearchFrameworkLast; bool SearchAppBundleFirst; bool SearchAppBundleOnly; bool SearchAppBundleLast; }; #endif