diff options
author | Brad King <brad.king@kitware.com> | 2024-01-29 15:43:29 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2024-01-29 15:43:43 (GMT) |
commit | a8b6d36a2d6e4910e26fd4e0d53f5d748341578b (patch) | |
tree | af9de0e5c6da4dbca353ea58bcfdae4f4d18f082 | |
parent | 6c3ab391098af494e1b05e021d783ecb9d5cdade (diff) | |
parent | d0bedb217046e4fb79bff2c24b581d97451d0fd4 (diff) | |
download | CMake-a8b6d36a2d6e4910e26fd4e0d53f5d748341578b.zip CMake-a8b6d36a2d6e4910e26fd4e0d53f5d748341578b.tar.gz CMake-a8b6d36a2d6e4910e26fd4e0d53f5d748341578b.tar.bz2 |
Merge topic 'autogen-makefile-depfile' into release-3.28
d0bedb2170 Autogen: Forward dependencies when both Makefile and DEPFILE are used
4deb9c41b8 cmQtAutoGenInitializer: Improve Const-correctness
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9190
-rw-r--r-- | Source/cmQtAutoGenInitializer.cxx | 13 | ||||
-rw-r--r-- | Tests/QtAutogen/AutogenTimestampDeps/CMakeLists.txt | 11 | ||||
-rw-r--r-- | Tests/QtAutogen/AutogenTimestampDeps/ProjectInfo.hpp.in | 6 | ||||
-rw-r--r-- | Tests/QtAutogen/AutogenTimestampDeps/cmake/UpdateProjectInfo.cmake | 2 | ||||
-rw-r--r-- | Tests/QtAutogen/AutogenTimestampDeps/src/CMakeLists.txt | 4 | ||||
-rw-r--r-- | Tests/QtAutogen/AutogenTimestampDeps/src/main.cpp | 5 | ||||
-rw-r--r-- | Tests/QtAutogen/Tests.cmake | 1 |
7 files changed, 40 insertions, 2 deletions
diff --git a/Source/cmQtAutoGenInitializer.cxx b/Source/cmQtAutoGenInitializer.cxx index 50b0ebe..66544d0 100644 --- a/Source/cmQtAutoGenInitializer.cxx +++ b/Source/cmQtAutoGenInitializer.cxx @@ -70,7 +70,7 @@ unsigned int GetParallelCPUCount() return count; } -std::string FileProjectRelativePath(cmMakefile* makefile, +std::string FileProjectRelativePath(cmMakefile const* makefile, std::string const& fileName) { std::string res; @@ -1369,7 +1369,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. @@ -1408,6 +1407,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)); diff --git a/Tests/QtAutogen/AutogenTimestampDeps/CMakeLists.txt b/Tests/QtAutogen/AutogenTimestampDeps/CMakeLists.txt new file mode 100644 index 0000000..3470a02 --- /dev/null +++ b/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) diff --git a/Tests/QtAutogen/AutogenTimestampDeps/ProjectInfo.hpp.in b/Tests/QtAutogen/AutogenTimestampDeps/ProjectInfo.hpp.in new file mode 100644 index 0000000..abaa66c --- /dev/null +++ b/Tests/QtAutogen/AutogenTimestampDeps/ProjectInfo.hpp.in @@ -0,0 +1,6 @@ +#ifndef PROJECTINFO_HPP +#define PROJECTINFO_HPP + +extern int VersionMajor; + +#endif // PROJECTINFO_HPP diff --git a/Tests/QtAutogen/AutogenTimestampDeps/cmake/UpdateProjectInfo.cmake b/Tests/QtAutogen/AutogenTimestampDeps/cmake/UpdateProjectInfo.cmake new file mode 100644 index 0000000..8dd8d55 --- /dev/null +++ b/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) diff --git a/Tests/QtAutogen/AutogenTimestampDeps/src/CMakeLists.txt b/Tests/QtAutogen/AutogenTimestampDeps/src/CMakeLists.txt new file mode 100644 index 0000000..e931248 --- /dev/null +++ b/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}) diff --git a/Tests/QtAutogen/AutogenTimestampDeps/src/main.cpp b/Tests/QtAutogen/AutogenTimestampDeps/src/main.cpp new file mode 100644 index 0000000..f3c4c4b --- /dev/null +++ b/Tests/QtAutogen/AutogenTimestampDeps/src/main.cpp @@ -0,0 +1,5 @@ +#include "ProjectInfo.hpp" +int main(int argc, char* argv[]) +{ + return 0; +} diff --git a/Tests/QtAutogen/Tests.cmake b/Tests/QtAutogen/Tests.cmake index d676abd..80f7329 100644 --- a/Tests/QtAutogen/Tests.cmake +++ b/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) |