summaryrefslogtreecommitdiffstats
path: root/Source/cmGeneratorTarget.h
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2017-04-17 14:30:58 (GMT)
committerKitware Robot <kwrobot@kitware.com>2017-04-17 14:31:02 (GMT)
commitbe2c45f2a98d69cc9952b592777bb506f69149a2 (patch)
tree61988961e9759240f91c2175c2d075935dbee68f /Source/cmGeneratorTarget.h
parentc003f1b996fdc6ff9e2542c21578d5cf04153247 (diff)
parentca697bfc264e4058de26942590aeaca25182ce15 (diff)
downloadCMake-be2c45f2a98d69cc9952b592777bb506f69149a2.zip
CMake-be2c45f2a98d69cc9952b592777bb506f69149a2.tar.gz
CMake-be2c45f2a98d69cc9952b592777bb506f69149a2.tar.bz2
Merge topic 'prepare-per-config-objects'
ca697bfc cmGeneratorTarget: Drop obj libs from GetConfigCommonSourceFiles e44a8d2c Xcode: Refactor loop over all sources 97cc29c7 VS: Teach generators how to mark per-config source files 2f6f6f0c Xcode: Use config-specific object library files on link lines 888c8af6 VS: List config-specific object library files on link lines 40aa6c05 cmGeneratorTarget: Add method to collect all sources for all configs Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !701
Diffstat (limited to 'Source/cmGeneratorTarget.h')
-rw-r--r--Source/cmGeneratorTarget.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h
index 7c86d30..d4f48fe 100644
--- a/Source/cmGeneratorTarget.h
+++ b/Source/cmGeneratorTarget.h
@@ -12,6 +12,7 @@
#include <map>
#include <set>
+#include <stddef.h>
#include <string>
#include <utility>
#include <vector>
@@ -69,6 +70,8 @@ public:
bool GetPropertyAsBool(const std::string& prop) const;
void GetSourceFiles(std::vector<cmSourceFile*>& files,
const std::string& config) const;
+ void GetSourceFilesWithoutObjectLibraries(std::vector<cmSourceFile*>& files,
+ const std::string& config) const;
/** Source file kinds (classifications).
Generators use this to decide how to treat a source file. */
@@ -107,6 +110,17 @@ public:
/** Get all sources needed for a configuration with kinds assigned. */
KindedSources const& GetKindedSources(std::string const& config) const;
+ struct AllConfigSource
+ {
+ cmSourceFile const* Source;
+ cmGeneratorTarget::SourceKind Kind;
+ std::vector<size_t> Configs;
+ };
+
+ /** Get all sources needed for all configurations with kinds and
+ per-source configurations assigned. */
+ std::vector<AllConfigSource> const& GetAllConfigSources() const;
+
void GetObjectSources(std::vector<cmSourceFile const*>&,
const std::string& config) const;
const std::string& GetObjectName(cmSourceFile const* file);
@@ -338,6 +352,9 @@ public:
std::string GetFullNameImported(const std::string& config,
bool implib) const;
+ /** Get source files common to all configurations and diagnose cases
+ with per-config sources. Excludes sources added by a TARGET_OBJECTS
+ generator expression. */
bool GetConfigCommonSourceFiles(std::vector<cmSourceFile*>& files) const;
bool HaveBuildTreeRPATH(const std::string& config) const;
@@ -731,6 +748,9 @@ private:
void ComputeKindedSources(KindedSources& files,
std::string const& config) const;
+ mutable std::vector<AllConfigSource> AllConfigSources;
+ void ComputeAllConfigSources() const;
+
std::vector<TargetPropertyEntry*> IncludeDirectoriesEntries;
std::vector<TargetPropertyEntry*> CompileOptionsEntries;
std::vector<TargetPropertyEntry*> CompileFeaturesEntries;