[Cmake-commits] CMake branch, next, updated. v3.0.0-4510-g500c21d
Nils Gladitz
nilsgladitz at gmail.com
Fri Jul 25 03:10:40 EDT 2014
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".
The branch, next has been updated
via 500c21da7f1427ad29e46d6c0dedc18d2a2d9044 (commit)
via b43933af38a14c3c27e548346b89d9c228ff7f37 (commit)
via dc131438fc2a6d93dde20534407e31af162a862f (commit)
from 9f9a93bdbfbcba4eec454eaf87b36e9aab444708 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=500c21da7f1427ad29e46d6c0dedc18d2a2d9044
commit 500c21da7f1427ad29e46d6c0dedc18d2a2d9044
Merge: 9f9a93b b43933a
Author: Nils Gladitz <nilsgladitz at gmail.com>
AuthorDate: Fri Jul 25 03:10:39 2014 -0400
Commit: CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Fri Jul 25 03:10:39 2014 -0400
Merge topic 'pdb-genex' into next
b43933af Genex: Implement generator expressions for target PDB files.
dc131438 Genex: Simplify filesytem artifact code
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b43933af38a14c3c27e548346b89d9c228ff7f37
commit b43933af38a14c3c27e548346b89d9c228ff7f37
Author: Nils Gladitz <nilsgladitz at gmail.com>
AuthorDate: Thu Jul 24 22:18:21 2014 +0200
Commit: Nils Gladitz <nilsgladitz at gmail.com>
CommitDate: Fri Jul 25 09:10:07 2014 +0200
Genex: Implement generator expressions for target PDB files.
diff --git a/Help/manual/cmake-generator-expressions.7.rst b/Help/manual/cmake-generator-expressions.7.rst
index bc24798..4f55687 100644
--- a/Help/manual/cmake-generator-expressions.7.rst
+++ b/Help/manual/cmake-generator-expressions.7.rst
@@ -148,6 +148,12 @@ than 4.2.0.
Name of file with soname (.so.3).
``$<TARGET_SONAME_FILE_DIR:tgt>``
Directory of with soname (.so.3).
+``$<TARGET_PDB_FILE:tgt>``
+ Full path to program database file (.pdb) where ``tgt`` is the name of a target.
+``$<TARGET_PDB_FILE_NAME:tgt>``
+ Name of program database file (.pdb).
+``$<TARGET_PDB_FILE_DIR:tgt>``
+ Directory of program database file (.pdb).
``$<TARGET_PROPERTY:tgt,prop>``
Value of the property ``prop`` on the target ``tgt``.
diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx
index 6f940a6..e3a7681 100644
--- a/Source/cmGeneratorExpressionEvaluator.cxx
+++ b/Source/cmGeneratorExpressionEvaluator.cxx
@@ -1512,6 +1512,7 @@ static const struct InstallPrefixNode : public cmGeneratorExpressionNode
class ArtifactNameTag;
class ArtifactLinkerTag;
class ArtifactSonameTag;
+class ArtifactPdbTag;
class ArtifactPathTag;
class ArtifactDirTag;
@@ -1558,6 +1559,21 @@ struct TargetFilesystemArtifactResultCreator<ArtifactSonameTag>
//----------------------------------------------------------------------------
template<>
+struct TargetFilesystemArtifactResultCreator<ArtifactPdbTag>
+{
+ static std::string Create(cmTarget* target,
+ cmGeneratorExpressionContext *context,
+ const GeneratorExpressionContent *)
+ {
+ std::string result = target->GetPDBDirectory(context->Config);
+ result += "/";
+ result += target->GetPDBName(context->Config);
+ return result;
+ }
+};
+
+//----------------------------------------------------------------------------
+template<>
struct TargetFilesystemArtifactResultCreator<ArtifactLinkerTag>
{
static std::string Create(cmTarget* target,
@@ -1706,6 +1722,9 @@ TargetFilesystemArtifactNodeGroup<ArtifactLinkerTag> targetLinkerNodeGroup;
static const
TargetFilesystemArtifactNodeGroup<ArtifactSonameTag> targetSoNameNodeGroup;
+static const
+TargetFilesystemArtifactNodeGroup<ArtifactPdbTag> targetPdbNodeGroup;
+
//----------------------------------------------------------------------------
static const
cmGeneratorExpressionNode* GetNode(const std::string &identifier)
@@ -1733,12 +1752,15 @@ cmGeneratorExpressionNode* GetNode(const std::string &identifier)
nodeMap["TARGET_FILE"] = &targetNodeGroup.File;
nodeMap["TARGET_LINKER_FILE"] = &targetLinkerNodeGroup.File;
nodeMap["TARGET_SONAME_FILE"] = &targetSoNameNodeGroup.File;
+ nodeMap["TARGET_PDB_FILE"] = &targetPdbNodeGroup.File;
nodeMap["TARGET_FILE_NAME"] = &targetNodeGroup.FileName;
nodeMap["TARGET_LINKER_FILE_NAME"] = &targetLinkerNodeGroup.FileName;
nodeMap["TARGET_SONAME_FILE_NAME"] = &targetSoNameNodeGroup.FileName;
+ nodeMap["TARGET_PDB_FILE_NAME"] = &targetPdbNodeGroup.FileName;
nodeMap["TARGET_FILE_DIR"] = &targetNodeGroup.FileDir;
nodeMap["TARGET_LINKER_FILE_DIR"] = &targetLinkerNodeGroup.FileDir;
nodeMap["TARGET_SONAME_FILE_DIR"] = &targetSoNameNodeGroup.FileDir;
+ nodeMap["TARGET_PDB_FILE_DIR"] = &targetPdbNodeGroup.FileDir;
nodeMap["STREQUAL"] = &strEqualNode;
nodeMap["EQUAL"] = &equalNode;
nodeMap["LOWER_CASE"] = &lowerCaseNode;
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=dc131438fc2a6d93dde20534407e31af162a862f
commit dc131438fc2a6d93dde20534407e31af162a862f
Author: Nils Gladitz <nilsgladitz at gmail.com>
AuthorDate: Thu Jul 24 21:36:21 2014 +0200
Commit: Nils Gladitz <nilsgladitz at gmail.com>
CommitDate: Fri Jul 25 09:10:07 2014 +0200
Genex: Simplify filesytem artifact code
diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx
index 28879f1..6f940a6 100644
--- a/Source/cmGeneratorExpressionEvaluator.cxx
+++ b/Source/cmGeneratorExpressionEvaluator.cxx
@@ -1509,7 +1509,16 @@ static const struct InstallPrefixNode : public cmGeneratorExpressionNode
} installPrefixNode;
//----------------------------------------------------------------------------
-template<bool linker, bool soname>
+class ArtifactNameTag;
+class ArtifactLinkerTag;
+class ArtifactSonameTag;
+
+class ArtifactPathTag;
+class ArtifactDirTag;
+class ArtifactNameTag;
+
+//----------------------------------------------------------------------------
+template<typename ArtifactT>
struct TargetFilesystemArtifactResultCreator
{
static std::string Create(cmTarget* target,
@@ -1519,7 +1528,7 @@ struct TargetFilesystemArtifactResultCreator
//----------------------------------------------------------------------------
template<>
-struct TargetFilesystemArtifactResultCreator<false, true>
+struct TargetFilesystemArtifactResultCreator<ArtifactSonameTag>
{
static std::string Create(cmTarget* target,
cmGeneratorExpressionContext *context,
@@ -1549,7 +1558,7 @@ struct TargetFilesystemArtifactResultCreator<false, true>
//----------------------------------------------------------------------------
template<>
-struct TargetFilesystemArtifactResultCreator<true, false>
+struct TargetFilesystemArtifactResultCreator<ArtifactLinkerTag>
{
static std::string Create(cmTarget* target,
cmGeneratorExpressionContext *context,
@@ -1570,7 +1579,7 @@ struct TargetFilesystemArtifactResultCreator<true, false>
//----------------------------------------------------------------------------
template<>
-struct TargetFilesystemArtifactResultCreator<false, false>
+struct TargetFilesystemArtifactResultCreator<ArtifactNameTag>
{
static std::string Create(cmTarget* target,
cmGeneratorExpressionContext *context,
@@ -1582,7 +1591,7 @@ struct TargetFilesystemArtifactResultCreator<false, false>
//----------------------------------------------------------------------------
-template<bool dirQual, bool nameQual>
+template<typename ArtifactT>
struct TargetFilesystemArtifactResultGetter
{
static std::string Get(const std::string &result);
@@ -1590,7 +1599,7 @@ struct TargetFilesystemArtifactResultGetter
//----------------------------------------------------------------------------
template<>
-struct TargetFilesystemArtifactResultGetter<false, true>
+struct TargetFilesystemArtifactResultGetter<ArtifactNameTag>
{
static std::string Get(const std::string &result)
{ return cmSystemTools::GetFilenameName(result); }
@@ -1598,7 +1607,7 @@ struct TargetFilesystemArtifactResultGetter<false, true>
//----------------------------------------------------------------------------
template<>
-struct TargetFilesystemArtifactResultGetter<true, false>
+struct TargetFilesystemArtifactResultGetter<ArtifactDirTag>
{
static std::string Get(const std::string &result)
{ return cmSystemTools::GetFilenamePath(result); }
@@ -1606,14 +1615,14 @@ struct TargetFilesystemArtifactResultGetter<true, false>
//----------------------------------------------------------------------------
template<>
-struct TargetFilesystemArtifactResultGetter<false, false>
+struct TargetFilesystemArtifactResultGetter<ArtifactPathTag>
{
static std::string Get(const std::string &result)
{ return result; }
};
//----------------------------------------------------------------------------
-template<bool linker, bool soname, bool dirQual, bool nameQual>
+template<typename ArtifactT, typename ComponentT>
struct TargetFilesystemArtifact : public cmGeneratorExpressionNode
{
TargetFilesystemArtifact() {}
@@ -1661,7 +1670,7 @@ struct TargetFilesystemArtifact : public cmGeneratorExpressionNode
context->AllTargets.insert(target);
std::string result =
- TargetFilesystemArtifactResultCreator<linker, soname>::Create(
+ TargetFilesystemArtifactResultCreator<ArtifactT>::Create(
target,
context,
content);
@@ -1670,29 +1679,32 @@ struct TargetFilesystemArtifact : public cmGeneratorExpressionNode
return std::string();
}
return
- TargetFilesystemArtifactResultGetter<dirQual, nameQual>::Get(result);
+ TargetFilesystemArtifactResultGetter<ComponentT>::Get(result);
}
};
//----------------------------------------------------------------------------
+template<typename ArtifactT>
+struct TargetFilesystemArtifactNodeGroup
+{
+ TargetFilesystemArtifactNodeGroup()
+ {
+ }
+
+ TargetFilesystemArtifact<ArtifactT, ArtifactPathTag> File;
+ TargetFilesystemArtifact<ArtifactT, ArtifactNameTag> FileName;
+ TargetFilesystemArtifact<ArtifactT, ArtifactDirTag> FileDir;
+};
+
+//----------------------------------------------------------------------------
static const
-TargetFilesystemArtifact<false, false, false, false> targetFileNode;
-static const
-TargetFilesystemArtifact<true, false, false, false> targetLinkerFileNode;
-static const
-TargetFilesystemArtifact<false, true, false, false> targetSoNameFileNode;
-static const
-TargetFilesystemArtifact<false, false, false, true> targetFileNameNode;
-static const
-TargetFilesystemArtifact<true, false, false, true> targetLinkerFileNameNode;
-static const
-TargetFilesystemArtifact<false, true, false, true> targetSoNameFileNameNode;
-static const
-TargetFilesystemArtifact<false, false, true, false> targetFileDirNode;
+TargetFilesystemArtifactNodeGroup<ArtifactNameTag> targetNodeGroup;
+
static const
-TargetFilesystemArtifact<true, false, true, false> targetLinkerFileDirNode;
+TargetFilesystemArtifactNodeGroup<ArtifactLinkerTag> targetLinkerNodeGroup;
+
static const
-TargetFilesystemArtifact<false, true, true, false> targetSoNameFileDirNode;
+TargetFilesystemArtifactNodeGroup<ArtifactSonameTag> targetSoNameNodeGroup;
//----------------------------------------------------------------------------
static const
@@ -1718,15 +1730,15 @@ cmGeneratorExpressionNode* GetNode(const std::string &identifier)
nodeMap["COMPILE_FEATURES"] = &compileFeaturesNode;
nodeMap["CONFIGURATION"] = &configurationNode;
nodeMap["CONFIG"] = &configurationTestNode;
- nodeMap["TARGET_FILE"] = &targetFileNode;
- nodeMap["TARGET_LINKER_FILE"] = &targetLinkerFileNode;
- nodeMap["TARGET_SONAME_FILE"] = &targetSoNameFileNode;
- nodeMap["TARGET_FILE_NAME"] = &targetFileNameNode;
- nodeMap["TARGET_LINKER_FILE_NAME"] = &targetLinkerFileNameNode;
- nodeMap["TARGET_SONAME_FILE_NAME"] = &targetSoNameFileNameNode;
- nodeMap["TARGET_FILE_DIR"] = &targetFileDirNode;
- nodeMap["TARGET_LINKER_FILE_DIR"] = &targetLinkerFileDirNode;
- nodeMap["TARGET_SONAME_FILE_DIR"] = &targetSoNameFileDirNode;
+ nodeMap["TARGET_FILE"] = &targetNodeGroup.File;
+ nodeMap["TARGET_LINKER_FILE"] = &targetLinkerNodeGroup.File;
+ nodeMap["TARGET_SONAME_FILE"] = &targetSoNameNodeGroup.File;
+ nodeMap["TARGET_FILE_NAME"] = &targetNodeGroup.FileName;
+ nodeMap["TARGET_LINKER_FILE_NAME"] = &targetLinkerNodeGroup.FileName;
+ nodeMap["TARGET_SONAME_FILE_NAME"] = &targetSoNameNodeGroup.FileName;
+ nodeMap["TARGET_FILE_DIR"] = &targetNodeGroup.FileDir;
+ nodeMap["TARGET_LINKER_FILE_DIR"] = &targetLinkerNodeGroup.FileDir;
+ nodeMap["TARGET_SONAME_FILE_DIR"] = &targetSoNameNodeGroup.FileDir;
nodeMap["STREQUAL"] = &strEqualNode;
nodeMap["EQUAL"] = &equalNode;
nodeMap["LOWER_CASE"] = &lowerCaseNode;
-----------------------------------------------------------------------
Summary of changes:
hooks/post-receive
--
CMake
More information about the Cmake-commits
mailing list