From 1f4c9aa7d2c93f2377a6d1cb4cf2c1137466e927 Mon Sep 17 00:00:00 2001
From: Marc Chevrier <marc.chevrier@gmail.com>
Date: Fri, 19 Apr 2019 13:30:03 +0200
Subject: Refactor: introduce method cmGeneratorTarget::GetFilePostfix

---
 Source/cmGeneratorTarget.cxx | 30 ++++++++++++++++++------------
 Source/cmGeneratorTarget.h   |  3 +++
 2 files changed, 21 insertions(+), 12 deletions(-)

diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx
index 3fb95bf..036a07d 100644
--- a/Source/cmGeneratorTarget.cxx
+++ b/Source/cmGeneratorTarget.cxx
@@ -491,6 +491,22 @@ std::string cmGeneratorTarget::GetFileSuffix(
   return suffix;
 }
 
+std::string cmGeneratorTarget::GetFilePostfix(const std::string& config) const
+{
+  const char* postfix = nullptr;
+  if (!config.empty()) {
+    std::string configProp = cmSystemTools::UpperCase(config);
+    configProp += "_POSTFIX";
+    postfix = this->GetProperty(configProp);
+    // Mac application bundles and frameworks have no postfix.
+    if (!this->IsImported() && postfix &&
+        (this->IsAppBundleOnApple() || this->IsFrameworkOnApple())) {
+      postfix = nullptr;
+    }
+  }
+  return postfix ? postfix : std::string();
+}
+
 const char* cmGeneratorTarget::GetFilePrefixInternal(
   cmStateEnums::ArtifactType artifact, const std::string& language) const
 {
@@ -3930,17 +3946,7 @@ void cmGeneratorTarget::GetFullNameInternal(
   }
 
   // Compute the full name for main target types.
-  const char* configPostfix = nullptr;
-  if (!config.empty()) {
-    std::string configProp = cmSystemTools::UpperCase(config);
-    configProp += "_POSTFIX";
-    configPostfix = this->GetProperty(configProp);
-    // Mac application bundles and frameworks have no postfix.
-    if (configPostfix &&
-        (this->IsAppBundleOnApple() || this->IsFrameworkOnApple())) {
-      configPostfix = nullptr;
-    }
-  }
+  const std::string configPostfix = this->GetFilePostfix(config);
 
   // frameworks have directory prefix but no suffix
   std::string fw_prefix;
@@ -3965,7 +3971,7 @@ void cmGeneratorTarget::GetFullNameInternal(
   outBase += this->GetOutputName(config, artifact);
 
   // Append the per-configuration postfix.
-  outBase += configPostfix ? configPostfix : "";
+  outBase += configPostfix;
 
   // Name shared libraries with their version number on some platforms.
   if (const char* soversion = this->GetProperty("SOVERSION")) {
diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h
index 81f5255..0e0ee6a 100644
--- a/Source/cmGeneratorTarget.h
+++ b/Source/cmGeneratorTarget.h
@@ -543,6 +543,9 @@ public:
                             cmStateEnums::ArtifactType artifact =
                               cmStateEnums::RuntimeBinaryArtifact) const;
 
+  /** Get target file postfix */
+  std::string GetFilePostfix(const std::string& config) const;
+
   /** Clears cached meta data for local and external source files.
    * The meta data will be recomputed on demand.
    */
-- 
cgit v0.12