Browse Source

Merge topic 'autogen-makefile-depfile'

d0bedb2170 Autogen: Forward dependencies when both Makefile and DEPFILE are used
4deb9c41b8 cmQtAutoGenInitializer: Improve Const-correctness

Acked-by: Kitware Robot <[email protected]>
Merge-request: !9190
Brad King 1 year ago
parent
commit
28e89baa22

+ 11 - 2
Source/cmQtAutoGenInitializer.cxx

@@ -72,7 +72,7 @@ unsigned int GetParallelCPUCount()
   return count;
 }
 
-std::string FileProjectRelativePath(cmMakefile* makefile,
+std::string FileProjectRelativePath(cmMakefile const* makefile,
                                     std::string const& fileName)
 {
   std::string res;
@@ -1462,7 +1462,6 @@ bool cmQtAutoGenInitializer::InitAutogenTarget()
     std::vector<std::string> dependencies(
       this->AutogenTarget.DependFiles.begin(),
       this->AutogenTarget.DependFiles.end());
-
     if (useDepfile) {
       // Create a custom command that generates a timestamp file and
       // has a depfile assigned. The depfile is created by JobDepFilesMergeT.
@@ -1501,6 +1500,16 @@ bool cmQtAutoGenInitializer::InitAutogenTarget()
       cc->SetEscapeOldStyle(false);
       cmTarget* timestampTarget = this->LocalGen->AddUtilityCommand(
         timestampTargetName, true, std::move(cc));
+      auto const isMake =
+        this->GlobalGen->GetName().find("Make") != std::string::npos;
+      if (this->AutogenTarget.DependOrigin && isMake) {
+        for (BT<std::pair<std::string, bool>> const& depName :
+             this->GenTarget->GetUtilities()) {
+          timestampTarget->AddUtility(depName.Value.first, false,
+                                      this->Makefile);
+        }
+      }
+
       this->LocalGen->AddGeneratorTarget(
         cm::make_unique<cmGeneratorTarget>(timestampTarget, this->LocalGen));
 

+ 11 - 0
Tests/QtAutogen/AutogenTimestampDeps/CMakeLists.txt

@@ -0,0 +1,11 @@
+cmake_minimum_required(VERSION 3.28)
+project(AutogenTimestampDeps)
+include("../AutogenCoreTest.cmake")
+
+set(CMAKE_AUTOMOC ON)
+
+add_custom_target(ProjectInfo
+  COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/UpdateProjectInfo.cmake
+  BYPRODUCTS ${CMAKE_BINARY_DIR}/ProjectInfo.hpp)
+
+add_subdirectory(src)

+ 6 - 0
Tests/QtAutogen/AutogenTimestampDeps/ProjectInfo.hpp.in

@@ -0,0 +1,6 @@
+#ifndef PROJECTINFO_HPP
+#define PROJECTINFO_HPP
+
+extern int VersionMajor;
+
+#endif // PROJECTINFO_HPP

+ 2 - 0
Tests/QtAutogen/AutogenTimestampDeps/cmake/UpdateProjectInfo.cmake

@@ -0,0 +1,2 @@
+
+configure_file(${CMAKE_CURRENT_LIST_DIR}/../ProjectInfo.hpp.in ${CMAKE_BINARY_DIR}/ProjectInfo.hpp @ONLY)

+ 4 - 0
Tests/QtAutogen/AutogenTimestampDeps/src/CMakeLists.txt

@@ -0,0 +1,4 @@
+add_executable(Exe main.cpp ${CMAKE_BINARY_DIR}/ProjectInfo.hpp)
+add_dependencies(Exe ProjectInfo)
+target_include_directories(Exe PRIVATE ${CMAKE_BINARY_DIR})
+target_link_libraries(Exe PRIVATE ${QT_QTCORE_TARGET})

+ 5 - 0
Tests/QtAutogen/AutogenTimestampDeps/src/main.cpp

@@ -0,0 +1,5 @@
+#include "ProjectInfo.hpp"
+int main(int argc, char* argv[])
+{
+  return 0;
+}

+ 1 - 0
Tests/QtAutogen/Tests.cmake

@@ -2,6 +2,7 @@
 ADD_AUTOGEN_TEST(AutogenOriginDependsOff autogenOriginDependsOff)
 ADD_AUTOGEN_TEST(AutogenOriginDependsOn)
 ADD_AUTOGEN_TEST(AutogenTargetDepends)
+ADD_AUTOGEN_TEST(AutogenTimestampDeps)
 ADD_AUTOGEN_TEST(AutoMocGeneratedFile)
 ADD_AUTOGEN_TEST(Complex QtAutogen)
 ADD_AUTOGEN_TEST(GlobalAutogenSystemUseInclude)