diff --git a/Source/cmPackageInfoReader.cxx b/Source/cmPackageInfoReader.cxx index cffd9be020..abf5e695dc 100644 --- a/Source/cmPackageInfoReader.cxx +++ b/Source/cmPackageInfoReader.cxx @@ -692,6 +692,7 @@ cmTarget* cmPackageInfoReader::AddLibraryComponent( { // Create the imported target. cmTarget* const target = makefile->AddImportedTarget(name, type, false); + target->SetOrigin(cmTarget::Origin::Cps); // Set default configurations. if (!this->DefaultConfigurations.empty()) { diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index d4ee14d89a..d87fd7c41f 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -589,6 +589,7 @@ class cmTargetInternals { public: cmStateEnums::TargetType TargetType; + cmTarget::Origin Origin = cmTarget::Origin::Unknown; cmMakefile* Makefile; cmPolicies::PolicyMap PolicyMap; cmTarget const* TemplateTarget; @@ -1112,6 +1113,18 @@ cmStateEnums::TargetType cmTarget::GetType() const return this->impl->TargetType; } +void cmTarget::SetOrigin(Origin origin) +{ + assert(origin != cmTarget::Origin::Unknown); + assert(this->impl->Origin == cmTarget::Origin::Unknown); + this->impl->Origin = origin; +} + +cmTarget::Origin cmTarget::GetOrigin() const +{ + return this->impl->Origin; +} + cmMakefile* cmTarget::GetMakefile() const { return this->impl->Makefile; diff --git a/Source/cmTarget.h b/Source/cmTarget.h index 2bddec5dda..4d75f45d3e 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -51,6 +51,12 @@ public: Foreign, }; + enum class Origin + { + Cps, + Unknown, + }; + enum class PerConfig { Yes, @@ -70,6 +76,12 @@ public: //! Return the type of target. cmStateEnums::TargetType GetType() const; + //! Set the origin of the target. + void SetOrigin(Origin origin); + + //! Return the origin of the target. + Origin GetOrigin() const; + //! Get the cmMakefile that owns this target. cmMakefile* GetMakefile() const;