summaryrefslogtreecommitdiffstats
path: root/Source/cmFindCommon.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmFindCommon.h')
-rw-r--r--Source/cmFindCommon.h95
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