From 434f5cef657a001bcfbaa5e8b5c4fba80215efb5 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 26 Apr 2017 08:35:11 -0400 Subject: Tests: Add case for IMPLICIT_DEPENDS in custom target Use the `IMPLICIT_DEPENDS` option of `add_custom_command` and place the command in a custom target. Verify that `INCLUDE_DIRECTORIES` of that custom target are honored. This is a case that was not really designed to work but happens to work, is useful, and makes sense. Add a test case make sure it continues to work. Issue: #16830 --- Tests/RunCMake/BuildDepends/MakeCustomIncludes.cmake | 13 +++++++++++++ Tests/RunCMake/BuildDepends/MakeCustomIncludes.cxx | 6 ++++++ Tests/RunCMake/BuildDepends/MakeCustomIncludes.step1.cmake | 3 +++ Tests/RunCMake/BuildDepends/MakeCustomIncludes.step2.cmake | 3 +++ Tests/RunCMake/BuildDepends/RunCMakeTest.cmake | 1 + 5 files changed, 26 insertions(+) create mode 100644 Tests/RunCMake/BuildDepends/MakeCustomIncludes.cmake create mode 100644 Tests/RunCMake/BuildDepends/MakeCustomIncludes.cxx create mode 100644 Tests/RunCMake/BuildDepends/MakeCustomIncludes.step1.cmake create mode 100644 Tests/RunCMake/BuildDepends/MakeCustomIncludes.step2.cmake diff --git a/Tests/RunCMake/BuildDepends/MakeCustomIncludes.cmake b/Tests/RunCMake/BuildDepends/MakeCustomIncludes.cmake new file mode 100644 index 0000000..0f92e0e --- /dev/null +++ b/Tests/RunCMake/BuildDepends/MakeCustomIncludes.cmake @@ -0,0 +1,13 @@ +add_custom_command( + OUTPUT output.cxx + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/MakeCustomIncludes.cxx output.cxx + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/MakeCustomIncludes.cxx + IMPLICIT_DEPENDS CXX ${CMAKE_CURRENT_SOURCE_DIR}/MakeCustomIncludes.cxx) +add_custom_target(generate ALL DEPENDS output.cxx) +set_property(TARGET generate PROPERTY INCLUDE_DIRECTORIES ${CMAKE_CURRENT_BINARY_DIR}) + +file(GENERATE OUTPUT check-$>.cmake CONTENT " +set(check_pairs + \"${CMAKE_CURRENT_BINARY_DIR}/output.cxx|${CMAKE_CURRENT_BINARY_DIR}/MakeCustomIncludes.h\" + ) +") diff --git a/Tests/RunCMake/BuildDepends/MakeCustomIncludes.cxx b/Tests/RunCMake/BuildDepends/MakeCustomIncludes.cxx new file mode 100644 index 0000000..9a0edef --- /dev/null +++ b/Tests/RunCMake/BuildDepends/MakeCustomIncludes.cxx @@ -0,0 +1,6 @@ +#include "MakeCustomIncludes.h" + +int main() +{ + return MakeCustomIncludes(); +} diff --git a/Tests/RunCMake/BuildDepends/MakeCustomIncludes.step1.cmake b/Tests/RunCMake/BuildDepends/MakeCustomIncludes.step1.cmake new file mode 100644 index 0000000..6bb01a6 --- /dev/null +++ b/Tests/RunCMake/BuildDepends/MakeCustomIncludes.step1.cmake @@ -0,0 +1,3 @@ +file(WRITE "${RunCMake_TEST_BINARY_DIR}/MakeCustomIncludes.h" [[ +inline int MakeCustomIncludes() { return 1; } +]]) diff --git a/Tests/RunCMake/BuildDepends/MakeCustomIncludes.step2.cmake b/Tests/RunCMake/BuildDepends/MakeCustomIncludes.step2.cmake new file mode 100644 index 0000000..6b3151d --- /dev/null +++ b/Tests/RunCMake/BuildDepends/MakeCustomIncludes.step2.cmake @@ -0,0 +1,3 @@ +file(WRITE "${RunCMake_TEST_BINARY_DIR}/MakeCustomIncludes.h" [[ +inline int MakeCustomIncludes() { return 2; } +]]) diff --git a/Tests/RunCMake/BuildDepends/RunCMakeTest.cmake b/Tests/RunCMake/BuildDepends/RunCMakeTest.cmake index 736ecff..9941c70 100644 --- a/Tests/RunCMake/BuildDepends/RunCMakeTest.cmake +++ b/Tests/RunCMake/BuildDepends/RunCMakeTest.cmake @@ -44,6 +44,7 @@ run_BuildDepends(Custom-Symbolic-and-Byproduct) run_BuildDepends(Custom-Always) if(RunCMake_GENERATOR MATCHES "Make") + run_BuildDepends(MakeCustomIncludes) if(NOT "${RunCMake_BINARY_DIR}" STREQUAL "${RunCMake_SOURCE_DIR}") run_BuildDepends(MakeInProjectOnly) endif() -- cgit v0.12