1 /*=========================================================================
3 Program: CMake - Cross-Platform Makefile Generator
4 Module: $RCSfile: cmFindCommon.h,v $
6 Date: $Date: 2008-06-09 19:08:59 $
7 Version: $Revision: 1.4 $
9 Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
10 See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
12 This software is distributed WITHOUT ANY WARRANTY; without even
13 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14 PURPOSE. See the above copyright notices for more information.
16 =========================================================================*/
17 #ifndef cmFindCommon_h
18 #define cmFindCommon_h
20 #include "cmCommand.h"
22 /** \class cmFindCommon
23 * \brief Base class for FIND_XXX implementations.
25 * cmFindCommon is a parent class for cmFindBase,
26 * cmFindProgramCommand, cmFindPathCommand, cmFindLibraryCommand,
27 * cmFindFileCommand, and cmFindPackageCommand.
29 class cmFindCommon
: public cmCommand
34 cmTypeMacro(cmFindCommon
, cmCommand
);
38 enum RootPathMode
{ RootPathModeBoth
,
39 RootPathModeOnlyRootPath
,
40 RootPathModeNoRootPath
};
42 enum PathType
{ FullPath
, CMakePath
, EnvPath
};
44 /** Place a set of search paths under the search roots. */
45 void RerootPaths(std::vector
<std::string
>& paths
);
47 /** Add trailing slashes to all search paths. */
48 void AddTrailingSlashes(std::vector
<std::string
>& paths
);
50 /** Compute the current default root path mode. */
51 void SelectDefaultRootPathMode();
53 /** Compute the current default bundle/framework search policy. */
54 void SelectDefaultMacMode();
56 cmStdString CMakePathName
;
57 RootPathMode FindRootPathMode
;
59 bool CheckCommonArgument(std::string
const& arg
);
60 void AddPathSuffix(std::string
const& arg
);
61 void AddUserPath(std::string
const& p
,
62 std::vector
<std::string
>& paths
);
63 void AddCMakePath(const char* variable
);
64 void AddEnvPath(const char* variable
);
65 void AddPathsInternal(std::vector
<std::string
> const& in_paths
,
67 void AddPathInternal(std::string
const& in_path
, PathType pathType
);
71 bool NoCMakeEnvironmentPath
;
72 bool NoSystemEnvironmentPath
;
73 bool NoCMakeSystemPath
;
75 std::vector
<std::string
> SearchPathSuffixes
;
76 std::vector
<std::string
> UserPaths
;
77 std::vector
<std::string
> UserHints
;
78 std::vector
<std::string
> SearchPaths
;
79 std::set
<cmStdString
> SearchPathsEmitted
;
81 std::string GenericDocumentationMacPolicy
;
82 std::string GenericDocumentationRootPath
;
83 std::string GenericDocumentationPathsOrder
;
85 bool SearchFrameworkFirst
;
86 bool SearchFrameworkOnly
;
87 bool SearchFrameworkLast
;
89 bool SearchAppBundleFirst
;
90 bool SearchAppBundleOnly
;
91 bool SearchAppBundleLast
;