mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-06 21:59:54 -06:00
@@ -6,20 +6,11 @@
|
||||
#include <cmConfigure.h>
|
||||
|
||||
#include "cmLinkedTree.h"
|
||||
#include "cm_unordered_map.hxx"
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
||||
#ifdef CMake_HAVE_CXX_UNORDERED_MAP
|
||||
#include <unordered_map>
|
||||
#else
|
||||
#include "cmsys/hash_map.hxx"
|
||||
#endif
|
||||
#else
|
||||
#include <map>
|
||||
#endif
|
||||
|
||||
/** \class cmDefinitions
|
||||
* \brief Store a scope of variable definitions for CMake language.
|
||||
*
|
||||
@@ -85,15 +76,7 @@ private:
|
||||
};
|
||||
static Def NoDef;
|
||||
|
||||
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
||||
#ifdef CMake_HAVE_CXX_UNORDERED_MAP
|
||||
typedef std::unordered_map<std::string, Def> MapType;
|
||||
#else
|
||||
typedef cmsys::hash_map<std::string, Def> MapType;
|
||||
#endif
|
||||
#else
|
||||
typedef std::map<std::string, Def> MapType;
|
||||
#endif
|
||||
typedef CM_UNORDERED_MAP<std::string, Def> MapType;
|
||||
MapType Map;
|
||||
|
||||
static Def const& GetInternal(const std::string& key, StackIter begin,
|
||||
|
||||
@@ -7,14 +7,7 @@
|
||||
#include <time.h>
|
||||
#include <utility>
|
||||
|
||||
// Use a hash table to avoid duplicate file time checks from disk.
|
||||
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
||||
#ifdef CMake_HAVE_CXX_UNORDERED_MAP
|
||||
#include <unordered_map>
|
||||
#else
|
||||
#include <cmsys/hash_map.hxx>
|
||||
#endif
|
||||
#endif
|
||||
#include "cm_unordered_map.hxx"
|
||||
|
||||
// Use a platform-specific API to get file times efficiently.
|
||||
#if !defined(_WIN32) || defined(__CYGWIN__)
|
||||
@@ -35,27 +28,9 @@ public:
|
||||
bool FileTimesDiffer(const char* f1, const char* f2);
|
||||
|
||||
private:
|
||||
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
||||
// Use a hash table to efficiently map from file name to modification time.
|
||||
class HashString
|
||||
{
|
||||
public:
|
||||
size_t operator()(const std::string& s) const { return h(s.c_str()); }
|
||||
#ifdef CMake_HAVE_CXX_UNORDERED_MAP
|
||||
std::hash<const char*> h;
|
||||
#else
|
||||
cmsys::hash<const char*> h;
|
||||
#endif
|
||||
};
|
||||
#ifdef CMake_HAVE_CXX_UNORDERED_MAP
|
||||
typedef std::unordered_map<std::string,
|
||||
#else
|
||||
typedef cmsys::hash_map<std::string,
|
||||
#endif
|
||||
cmFileTimeComparison_Type, HashString>
|
||||
typedef CM_UNORDERED_MAP<std::string, cmFileTimeComparison_Type>
|
||||
FileStatsMap;
|
||||
FileStatsMap Files;
|
||||
#endif
|
||||
|
||||
// Internal methods to lookup and compare modification times.
|
||||
inline bool Stat(const char* fname, cmFileTimeComparison_Type* st);
|
||||
@@ -68,7 +43,6 @@ private:
|
||||
bool cmFileTimeComparisonInternal::Stat(const char* fname,
|
||||
cmFileTimeComparison_Type* st)
|
||||
{
|
||||
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
||||
// Use the stored time if available.
|
||||
cmFileTimeComparisonInternal::FileStatsMap::iterator fit =
|
||||
this->Files.find(fname);
|
||||
@@ -76,7 +50,6 @@ bool cmFileTimeComparisonInternal::Stat(const char* fname,
|
||||
*st = fit->second;
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !defined(_WIN32) || defined(__CYGWIN__)
|
||||
// POSIX version. Use the stat function.
|
||||
@@ -97,11 +70,8 @@ bool cmFileTimeComparisonInternal::Stat(const char* fname,
|
||||
*st = fdata.ftLastWriteTime;
|
||||
#endif
|
||||
|
||||
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
||||
// Store the time for future use.
|
||||
this->Files[fname] = *st;
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include "cmTarget.h"
|
||||
#include "cmTargetDepend.h"
|
||||
#include "cm_codecvt.hxx"
|
||||
#include "cm_unordered_map.hxx"
|
||||
|
||||
#include <iosfwd>
|
||||
#include <map>
|
||||
@@ -22,11 +23,6 @@
|
||||
|
||||
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
||||
#include "cmFileLockPool.h"
|
||||
#ifdef CMake_HAVE_CXX_UNORDERED_MAP
|
||||
#include <unordered_map>
|
||||
#else
|
||||
#include <cmsys/hash_map.hxx>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
class cmCustomCommandLines;
|
||||
@@ -468,22 +464,9 @@ protected:
|
||||
const char* GetPredefinedTargetsFolder();
|
||||
|
||||
private:
|
||||
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
||||
#ifdef CMake_HAVE_CXX_UNORDERED_MAP
|
||||
typedef std::unordered_map<std::string, cmTarget*> TargetMap;
|
||||
typedef std::unordered_map<std::string, cmGeneratorTarget*>
|
||||
GeneratorTargetMap;
|
||||
typedef std::unordered_map<std::string, cmMakefile*> MakefileMap;
|
||||
#else
|
||||
typedef cmsys::hash_map<std::string, cmTarget*> TargetMap;
|
||||
typedef cmsys::hash_map<std::string, cmGeneratorTarget*> GeneratorTargetMap;
|
||||
typedef cmsys::hash_map<std::string, cmMakefile*> MakefileMap;
|
||||
#endif
|
||||
#else
|
||||
typedef std::map<std::string, cmTarget*> TargetMap;
|
||||
typedef std::map<std::string, cmGeneratorTarget*> GeneratorTargetMap;
|
||||
typedef std::map<std::string, cmMakefile*> MakefileMap;
|
||||
#endif
|
||||
typedef CM_UNORDERED_MAP<std::string, cmTarget*> TargetMap;
|
||||
typedef CM_UNORDERED_MAP<std::string, cmGeneratorTarget*> GeneratorTargetMap;
|
||||
typedef CM_UNORDERED_MAP<std::string, cmMakefile*> MakefileMap;
|
||||
// Map efficiently from target name to cmTarget instance.
|
||||
// Do not use this structure for looping over all targets.
|
||||
// It contains both normal and globally visible imported targets.
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include "cmStateSnapshot.h"
|
||||
#include "cmTarget.h"
|
||||
#include "cmTargetLinkLibraryType.h"
|
||||
#include "cm_unordered_map.hxx"
|
||||
#include "cmake.h"
|
||||
|
||||
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
||||
@@ -27,14 +28,6 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
||||
#ifdef CMake_HAVE_CXX_UNORDERED_MAP
|
||||
#include <unordered_map>
|
||||
#else
|
||||
#include <cmsys/hash_map.hxx>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
class cmCommand;
|
||||
class cmCompiledGeneratorExpression;
|
||||
class cmCustomCommandLines;
|
||||
@@ -783,15 +776,6 @@ protected:
|
||||
|
||||
// libraries, classes, and executables
|
||||
mutable cmTargets Targets;
|
||||
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
||||
#ifdef CMake_HAVE_CXX_UNORDERED_MAP
|
||||
typedef std::unordered_map<std::string, cmTarget*> TargetMap;
|
||||
#else
|
||||
typedef cmsys::hash_map<std::string, cmTarget*> TargetMap;
|
||||
#endif
|
||||
#else
|
||||
typedef std::map<std::string, cmTarget*> TargetMap;
|
||||
#endif
|
||||
std::map<std::string, std::string> AliasTargets;
|
||||
std::vector<cmSourceFile*> SourceFiles;
|
||||
|
||||
@@ -863,6 +847,7 @@ private:
|
||||
friend class cmParseFileScope;
|
||||
|
||||
std::vector<cmTarget*> ImportedTargetsOwned;
|
||||
typedef CM_UNORDERED_MAP<std::string, cmTarget*> TargetMap;
|
||||
TargetMap ImportedTargets;
|
||||
|
||||
// Internal policy stack management.
|
||||
@@ -899,16 +884,8 @@ private:
|
||||
*/
|
||||
cmSourceFile* LinearGetSourceFileWithOutput(const std::string& cname) const;
|
||||
|
||||
// A map for fast output to input look up.
|
||||
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
||||
#ifdef CMake_HAVE_CXX_UNORDERED_MAP
|
||||
typedef std::unordered_map<std::string, cmSourceFile*> OutputToSourceMap;
|
||||
#else
|
||||
typedef cmsys::hash_map<std::string, cmSourceFile*> OutputToSourceMap;
|
||||
#endif
|
||||
#else
|
||||
typedef std::map<std::string, cmSourceFile*> OutputToSourceMap;
|
||||
#endif
|
||||
// A map for fast output to input look up.
|
||||
typedef CM_UNORDERED_MAP<std::string, cmSourceFile*> OutputToSourceMap;
|
||||
OutputToSourceMap OutputToSource;
|
||||
|
||||
void UpdateOutputToSourceMap(std::vector<std::string> const& outputs,
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include "cmPropertyMap.h"
|
||||
#include "cmStateTypes.h"
|
||||
#include "cmTargetLinkLibraryType.h"
|
||||
#include "cm_unordered_map.hxx"
|
||||
|
||||
#include <iosfwd>
|
||||
#include <map>
|
||||
@@ -20,14 +21,6 @@
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
||||
#ifdef CMake_HAVE_CXX_UNORDERED_MAP
|
||||
#include <unordered_map>
|
||||
#else
|
||||
#include <cmsys/hash_map.hxx>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
class cmMakefile;
|
||||
class cmSourceFile;
|
||||
class cmGlobalGenerator;
|
||||
@@ -324,15 +317,7 @@ private:
|
||||
cmListFileBacktrace Backtrace;
|
||||
};
|
||||
|
||||
#ifdef CMAKE_BUILD_WITH_CMAKE
|
||||
#ifdef CMake_HAVE_CXX_UNORDERED_MAP
|
||||
typedef std::unordered_map<std::string, cmTarget> cmTargets;
|
||||
#else
|
||||
typedef cmsys::hash_map<std::string, cmTarget> cmTargets;
|
||||
#endif
|
||||
#else
|
||||
typedef std::map<std::string, cmTarget> cmTargets;
|
||||
#endif
|
||||
typedef CM_UNORDERED_MAP<std::string, cmTarget> cmTargets;
|
||||
|
||||
class cmTargetSet : public std::set<std::string>
|
||||
{
|
||||
|
||||
25
Source/cm_unordered_map.hxx
Normal file
25
Source/cm_unordered_map.hxx
Normal file
@@ -0,0 +1,25 @@
|
||||
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
file Copyright.txt or https://cmake.org/licensing for details. */
|
||||
#ifndef CM_UNORDERED_MAP_HXX
|
||||
#define CM_UNORDERED_MAP_HXX
|
||||
|
||||
#include <cmConfigure.h>
|
||||
|
||||
#if defined(CMake_HAVE_CXX_UNORDERED_MAP)
|
||||
|
||||
#include <unordered_map>
|
||||
#define CM_UNORDERED_MAP std::unordered_map
|
||||
|
||||
#elif defined(CMAKE_BUILD_WITH_CMAKE)
|
||||
|
||||
#include <cmsys/hash_map.hxx>
|
||||
#define CM_UNORDERED_MAP cmsys::hash_map
|
||||
|
||||
#else
|
||||
|
||||
#include <map>
|
||||
#define CM_UNORDERED_MAP std::map
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -27,6 +27,7 @@
|
||||
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
||||
#include "cmGraphVizWriter.h"
|
||||
#include "cmVariableWatch.h"
|
||||
#include "cm_unordered_map.hxx"
|
||||
|
||||
#include <cm_jsoncpp_writer.h>
|
||||
#endif
|
||||
@@ -122,11 +123,7 @@ class cmCommand;
|
||||
namespace {
|
||||
|
||||
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
||||
#ifdef CMake_HAVE_CXX_UNORDERED_MAP
|
||||
typedef std::unordered_map<std::string, Json::Value> JsonValueMapType;
|
||||
#else
|
||||
typedef cmsys::hash_map<std::string, Json::Value> JsonValueMapType;
|
||||
#endif
|
||||
typedef CM_UNORDERED_MAP<std::string, Json::Value> JsonValueMapType;
|
||||
#endif
|
||||
|
||||
} // namespace
|
||||
|
||||
Reference in New Issue
Block a user