Explorar o código

autogen: compute short directories too

Not just short directory roots. The test suites did an improper
generator check and masked them as the generator masks were put in place
after the core development but before the autogen-specific logic tests
were created.
Ben Boeckel hai 2 meses
pai
achega
fe0163cd23

+ 2 - 1
Source/cmExtraEclipseCDT4Generator.cxx

@@ -974,7 +974,8 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
             std::string cleanArgs =
               cmStrCat("-E chdir \"", lgen->GetObjectOutputRoot(), "\" \"",
                        cmSystemTools::GetCMakeCommand(), "\" -P \"");
-            cleanArgs += lgen->GetTargetDirectory(target.get());
+            cleanArgs += lgen->GetTargetDirectory(
+              target.get(), cmStateEnums::IntermediateDirKind::ObjectFiles);
             cleanArgs += "/cmake_clean.cmake\"";
             cmExtraEclipseCDT4Generator::AppendTarget(
               xml, "Clean", cmSystemTools::GetCMakeCommand(), cleanArgs,

+ 3 - 3
Source/cmGeneratorTarget.cxx

@@ -5436,7 +5436,7 @@ std::string cmGeneratorTarget::GetSupportDirectory(
 {
   cmLocalGenerator* lg = this->GetLocalGenerator();
   return cmStrCat(lg->GetObjectOutputRoot(kind), '/',
-                  lg->GetTargetDirectory(this));
+                  lg->GetTargetDirectory(this, kind));
 }
 
 std::string cmGeneratorTarget::GetCMFSupportDirectory(
@@ -5445,10 +5445,10 @@ std::string cmGeneratorTarget::GetCMFSupportDirectory(
   cmLocalGenerator* lg = this->GetLocalGenerator();
   if (!lg->AlwaysUsesCMFPaths()) {
     return cmStrCat(lg->GetCurrentBinaryDirectory(), "/CMakeFiles/",
-                    lg->GetTargetDirectory(this));
+                    lg->GetTargetDirectory(this, kind));
   }
   return cmStrCat(lg->GetObjectOutputRoot(kind), '/',
-                  lg->GetTargetDirectory(this));
+                  lg->GetTargetDirectory(this, kind));
 }
 
 bool cmGeneratorTarget::IsLinkable() const

+ 3 - 2
Source/cmLocalCommonGenerator.cxx

@@ -105,9 +105,10 @@ std::string cmLocalCommonGenerator::ComputeLongTargetDirectory(
 }
 
 std::string cmLocalCommonGenerator::GetTargetDirectory(
-  cmGeneratorTarget const* target) const
+  cmGeneratorTarget const* target,
+  cmStateEnums::IntermediateDirKind kind) const
 {
-  if (target->GetUseShortObjectNames()) {
+  if (target->GetUseShortObjectNames(kind)) {
     return this->ComputeShortTargetDirectory(target);
   }
   return this->ComputeLongTargetDirectory(target);

+ 5 - 1
Source/cmLocalCommonGenerator.h

@@ -15,6 +15,9 @@ class cmGlobalGenerator;
 class cmMakefile;
 struct cmObjectLocations;
 class cmSourceFile;
+namespace cmStateEnums {
+enum class IntermediateDirKind;
+}
 
 /** \class cmLocalCommonGenerator
  * \brief Common infrastructure for Makefile and Ninja local generators.
@@ -37,7 +40,8 @@ public:
 
   std::string ComputeLongTargetDirectory(cmGeneratorTarget const* gt) const;
   std::string GetTargetDirectory(
-    cmGeneratorTarget const* target) const override;
+    cmGeneratorTarget const* target,
+    cmStateEnums::IntermediateDirKind kind) const override;
 
   void ComputeObjectFilenames(
     std::map<cmSourceFile const*, cmObjectLocations>& mapping,

+ 2 - 1
Source/cmLocalGenerator.cxx

@@ -4381,7 +4381,8 @@ std::string const& cmLocalGenerator::GetCurrentSourceDirectory() const
 }
 
 std::string cmLocalGenerator::GetTargetDirectory(
-  cmGeneratorTarget const* /*unused*/) const
+  cmGeneratorTarget const* /*unused*/,
+  cmStateEnums::IntermediateDirKind /*kind*/) const
 {
   cmSystemTools::Error("GetTargetDirectory"
                        " called on cmLocalGenerator");

+ 2 - 1
Source/cmLocalGenerator.h

@@ -429,7 +429,8 @@ public:
    * per-target support directory.
    */
   virtual std::string GetTargetDirectory(
-    cmGeneratorTarget const* target) const;
+    cmGeneratorTarget const* target,
+    cmStateEnums::IntermediateDirKind kind) const;
 
   cmPolicies::PolicyStatus GetPolicyStatus(cmPolicies::PolicyID id) const;
 

+ 6 - 1
Source/cmLocalGhsMultiGenerator.cxx

@@ -15,6 +15,10 @@
 #include "cmStringAlgorithms.h"
 #include "cmSystemTools.h"
 
+namespace cmStateEnums {
+enum class IntermediateDirKind;
+}
+
 cmLocalGhsMultiGenerator::cmLocalGhsMultiGenerator(cmGlobalGenerator* gg,
                                                    cmMakefile* mf)
   : cmLocalGenerator(gg, mf)
@@ -24,7 +28,8 @@ cmLocalGhsMultiGenerator::cmLocalGhsMultiGenerator(cmGlobalGenerator* gg,
 cmLocalGhsMultiGenerator::~cmLocalGhsMultiGenerator() = default;
 
 std::string cmLocalGhsMultiGenerator::GetTargetDirectory(
-  cmGeneratorTarget const* target) const
+  cmGeneratorTarget const* target,
+  cmStateEnums::IntermediateDirKind /*kind*/) const
 {
   std::string dir = cmStrCat(target->GetName(), ".dir");
   return dir;

+ 5 - 1
Source/cmLocalGhsMultiGenerator.h

@@ -12,6 +12,9 @@ class cmGlobalGenerator;
 class cmMakefile;
 struct cmObjectLocations;
 class cmSourceFile;
+namespace cmStateEnums {
+enum class IntermediateDirKind;
+}
 
 /** \class cmLocalGhsMultiGenerator
  * \brief Write Green Hills MULTI project files.
@@ -32,7 +35,8 @@ public:
   void Generate() override;
 
   std::string GetTargetDirectory(
-    cmGeneratorTarget const* target) const override;
+    cmGeneratorTarget const* target,
+    cmStateEnums::IntermediateDirKind kind) const override;
 
   void ComputeObjectFilenames(
     std::map<cmSourceFile const*, cmObjectLocations>& mapping,

+ 3 - 2
Source/cmLocalVisualStudio7Generator.cxx

@@ -2229,10 +2229,11 @@ void cmLocalVisualStudio7Generator::ReadAndStoreExternalGUID(
 }
 
 std::string cmLocalVisualStudio7Generator::GetTargetDirectory(
-  cmGeneratorTarget const* target) const
+  cmGeneratorTarget const* target,
+  cmStateEnums::IntermediateDirKind kind) const
 {
   std::string dir;
-  if (target->GetUseShortObjectNames()) {
+  if (target->GetUseShortObjectNames(kind)) {
     dir = this->ComputeShortTargetDirectory(target);
   } else {
     dir = cmStrCat(target->GetName(), ".dir");

+ 3 - 1
Source/cmLocalVisualStudio7Generator.h

@@ -12,6 +12,7 @@
 #include <vector>
 
 #include "cmLocalVisualStudioGenerator.h"
+#include "cmStateTypes.h"
 #include "cmVisualStudioGeneratorOptions.h"
 
 class cmCustomCommand;
@@ -76,7 +77,8 @@ public:
   void SetBuildType(BuildType, std::string const& name);
 
   std::string GetTargetDirectory(
-    cmGeneratorTarget const* target) const override;
+    cmGeneratorTarget const* target,
+    cmStateEnums::IntermediateDirKind kind) const override;
   cmSourceFile* CreateVCProjBuildRule();
   void WriteStampFiles();
   std::string ComputeLongestObjectDirectory(

+ 2 - 1
Source/cmLocalXCodeGenerator.cxx

@@ -28,7 +28,8 @@ cmLocalXCodeGenerator::cmLocalXCodeGenerator(cmGlobalGenerator* gg,
 cmLocalXCodeGenerator::~cmLocalXCodeGenerator() = default;
 
 std::string cmLocalXCodeGenerator::GetTargetDirectory(
-  cmGeneratorTarget const* target) const
+  cmGeneratorTarget const* target,
+  cmStateEnums::IntermediateDirKind /*kind*/) const
 {
   return cmStrCat(target->GetName(), ".dir");
 }

+ 2 - 1
Source/cmLocalXCodeGenerator.h

@@ -30,7 +30,8 @@ public:
 
   ~cmLocalXCodeGenerator() override;
   std::string GetTargetDirectory(
-    cmGeneratorTarget const* target) const override;
+    cmGeneratorTarget const* target,
+    cmStateEnums::IntermediateDirKind kind) const override;
   void AppendFlagEscape(std::string& flags,
                         std::string const& rawFlag) const override;
   void Generate() override;