diff options
author | Brad King <brad.king@kitware.com> | 2024-03-13 15:39:02 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2024-03-14 13:05:06 (GMT) |
commit | 6193d155560b52f6b43160f094a73b4dd3c920d3 (patch) | |
tree | 20172722c10ec4c3b309040daafb13670c46f5d2 /Tests/QtAutogen | |
parent | 7a9fc8ca06b56f19692b8c27d05ba659ee35aa6d (diff) | |
download | CMake-6193d155560b52f6b43160f094a73b4dd3c920d3.zip CMake-6193d155560b52f6b43160f094a73b4dd3c920d3.tar.gz CMake-6193d155560b52f6b43160f094a73b4dd3c920d3.tar.bz2 |
Autogen: Restore target-ordering dependencies in Makefiles with DEPFILE
In commit aebfbcaa46 (AutoGen: Use depfiles for the XXX_autogen ninja
targets, 2020-01-14, v3.17.0-rc1~58^2) the `_autogen_timestamp_deps`
target was given target ordering dependencies through its custom command
rather than direct target dependencies as on the `_autogen` target.
Then commit 895fa3433f (cmQtAutoGenInitializer: support IMPLIB-only
imported targets, 2021-09-23, v3.22.0-rc1~80^2) converted some
target-level dependencies into file-level dependencies on the custom
command. This only works with a monolithic build graph like Ninja.
Since commit ebc9e448b3 (Autogen: Add depfile support for Makefiles,
2023-09-07, v3.28.0-rc1~101^2~1) we use the `_autogen_timestamp_deps`
target in Makefile generators too. This exposed the missing target
ordering dependency.
Fixes: #25766
Diffstat (limited to 'Tests/QtAutogen')
-rw-r--r-- | Tests/QtAutogen/AutogenTimestampDeps/CMakeLists.txt | 13 | ||||
-rw-r--r-- | Tests/QtAutogen/AutogenTimestampDeps/ext/CMakeLists.txt | 4 | ||||
-rw-r--r-- | Tests/QtAutogen/AutogenTimestampDeps/ext/ext.c | 4 | ||||
-rw-r--r-- | Tests/QtAutogen/AutogenTimestampDeps/src/CMakeLists.txt | 1 | ||||
-rw-r--r-- | Tests/QtAutogen/AutogenTimestampDeps/src/main.cpp | 3 | ||||
-rw-r--r-- | Tests/QtAutogen/Tests.cmake | 4 |
6 files changed, 28 insertions, 1 deletions
diff --git a/Tests/QtAutogen/AutogenTimestampDeps/CMakeLists.txt b/Tests/QtAutogen/AutogenTimestampDeps/CMakeLists.txt index 3470a02..04cbde6 100644 --- a/Tests/QtAutogen/AutogenTimestampDeps/CMakeLists.txt +++ b/Tests/QtAutogen/AutogenTimestampDeps/CMakeLists.txt @@ -8,4 +8,17 @@ add_custom_target(ProjectInfo COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/UpdateProjectInfo.cmake BYPRODUCTS ${CMAKE_BINARY_DIR}/ProjectInfo.hpp) +set(ext_lib ${CMAKE_CURRENT_BINARY_DIR}/ext-build/${CMAKE_STATIC_LIBRARY_PREFIX}ext${CMAKE_STATIC_LIBRARY_SUFFIX}) +include(ExternalProject) +ExternalProject_Add(ext_target + SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ext" + BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/ext-build" + DOWNLOAD_COMMAND "" + INSTALL_COMMAND "" + BUILD_BYPRODUCTS "${ext_lib}" + ) +add_library(ext STATIC IMPORTED) +set_property(TARGET ext PROPERTY IMPORTED_LOCATION "${ext_lib}") +add_dependencies(ext ext_target) + add_subdirectory(src) diff --git a/Tests/QtAutogen/AutogenTimestampDeps/ext/CMakeLists.txt b/Tests/QtAutogen/AutogenTimestampDeps/ext/CMakeLists.txt new file mode 100644 index 0000000..b6f359f --- /dev/null +++ b/Tests/QtAutogen/AutogenTimestampDeps/ext/CMakeLists.txt @@ -0,0 +1,4 @@ +cmake_minimum_required(VERSION 3.28) +project(Ext C) +add_library(ext STATIC ext.c) +set_property(TARGET ext PROPERTY ARCHIVE_OUTPUT_DIRECTORY "$<1:${CMAKE_CURRENT_BINARY_DIR}>") diff --git a/Tests/QtAutogen/AutogenTimestampDeps/ext/ext.c b/Tests/QtAutogen/AutogenTimestampDeps/ext/ext.c new file mode 100644 index 0000000..be253f2 --- /dev/null +++ b/Tests/QtAutogen/AutogenTimestampDeps/ext/ext.c @@ -0,0 +1,4 @@ +int ext(void) +{ + return 0; +} diff --git a/Tests/QtAutogen/AutogenTimestampDeps/src/CMakeLists.txt b/Tests/QtAutogen/AutogenTimestampDeps/src/CMakeLists.txt index e931248..6a0beac 100644 --- a/Tests/QtAutogen/AutogenTimestampDeps/src/CMakeLists.txt +++ b/Tests/QtAutogen/AutogenTimestampDeps/src/CMakeLists.txt @@ -2,3 +2,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}) +target_link_libraries(Exe PRIVATE ext) diff --git a/Tests/QtAutogen/AutogenTimestampDeps/src/main.cpp b/Tests/QtAutogen/AutogenTimestampDeps/src/main.cpp index f3c4c4b..d715488 100644 --- a/Tests/QtAutogen/AutogenTimestampDeps/src/main.cpp +++ b/Tests/QtAutogen/AutogenTimestampDeps/src/main.cpp @@ -1,5 +1,6 @@ #include "ProjectInfo.hpp" +extern "C" int ext(); int main(int argc, char* argv[]) { - return 0; + return ext(); } diff --git a/Tests/QtAutogen/Tests.cmake b/Tests/QtAutogen/Tests.cmake index 80f7329..d37be1c 100644 --- a/Tests/QtAutogen/Tests.cmake +++ b/Tests/QtAutogen/Tests.cmake @@ -2,7 +2,11 @@ ADD_AUTOGEN_TEST(AutogenOriginDependsOff autogenOriginDependsOff) ADD_AUTOGEN_TEST(AutogenOriginDependsOn) ADD_AUTOGEN_TEST(AutogenTargetDepends) + +set(Autogen_CTEST_OPTIONS --build-target Exe) ADD_AUTOGEN_TEST(AutogenTimestampDeps) +unset(Autogen_CTEST_OPTIONS) + ADD_AUTOGEN_TEST(AutoMocGeneratedFile) ADD_AUTOGEN_TEST(Complex QtAutogen) ADD_AUTOGEN_TEST(GlobalAutogenSystemUseInclude) |