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 6b02906522196cfc2f8c9c29fb3f483d6d5b61ff (commit) via 5e902985975f99a54522044f7e920cd881e91a4e (commit) via a6effabaa53f0ca3db31a81b50f7e99a9b2b976c (commit) from 74bdbe6e7400afc49a7223295cf0e5e078b1c478 (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=6b02906522196cfc2f8c9c29fb3f483d6d5b61ff commit 6b02906522196cfc2f8c9c29fb3f483d6d5b61ff Merge: 74bdbe6 5e90298 Author: Nils Gladitz <nilsglad...@gmail.com> AuthorDate: Thu Jul 24 16:31:54 2014 -0400 Commit: CMake Topic Stage <kwro...@kitware.com> CommitDate: Thu Jul 24 16:31:54 2014 -0400 Merge topic 'pdb-genex' into next 5e902985 Genex: Implement generator expressions for target PDB files. a6effaba Genex: Simplify filesytem artifact code http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5e902985975f99a54522044f7e920cd881e91a4e commit 5e902985975f99a54522044f7e920cd881e91a4e Author: Nils Gladitz <nilsglad...@gmail.com> AuthorDate: Thu Jul 24 22:18:21 2014 +0200 Commit: Nils Gladitz <nilsglad...@gmail.com> CommitDate: Thu Jul 24 22:18:21 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 7e77e4a..8c7c53b 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 *content) + { + 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, @@ -1702,6 +1718,9 @@ TargetFilesystemArtifactNodeGroup<ArtifactLinkerTag> targetLinkerNodeGroup; static const TargetFilesystemArtifactNodeGroup<ArtifactSonameTag> targetSoNameNodeGroup; +static const +TargetFilesystemArtifactNodeGroup<ArtifactPdbTag> targetPdbNodeGroup; + //---------------------------------------------------------------------------- static const cmGeneratorExpressionNode* GetNode(const std::string &identifier) @@ -1729,12 +1748,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=a6effabaa53f0ca3db31a81b50f7e99a9b2b976c commit a6effabaa53f0ca3db31a81b50f7e99a9b2b976c Author: Nils Gladitz <nilsglad...@gmail.com> AuthorDate: Thu Jul 24 21:36:21 2014 +0200 Commit: Nils Gladitz <nilsglad...@gmail.com> CommitDate: Thu Jul 24 21:36:21 2014 +0200 Genex: Simplify filesytem artifact code diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx index 28879f1..7e77e4a 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,28 @@ struct TargetFilesystemArtifact : public cmGeneratorExpressionNode return std::string(); } return - TargetFilesystemArtifactResultGetter<dirQual, nameQual>::Get(result); + TargetFilesystemArtifactResultGetter<ComponentT>::Get(result); } }; //---------------------------------------------------------------------------- +template<typename ArtifactT> +struct 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 +1726,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: Help/manual/cmake-generator-expressions.7.rst | 6 ++ Source/cmGeneratorExpressionEvaluator.cxx | 98 ++++++++++++++++--------- 2 files changed, 70 insertions(+), 34 deletions(-) hooks/post-receive -- CMake _______________________________________________ Cmake-commits mailing list Cmake-commits@cmake.org http://public.kitware.com/mailman/listinfo/cmake-commits