summaryrefslogtreecommitdiffstats
path: root/Tests/RunCMake/BuildDepends/Custom-Symbolic-and-Byproduct.cmake
blob: 687c8271fd46fc2d9a100f8fc4f7705bbb7e608f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
add_custom_command(
  OUTPUT gen-byproduct gen-byproduct-stamp
  BYPRODUCTS byproduct
  COMMAND ${CMAKE_COMMAND} -E touch gen-byproduct-stamp
  COMMAND ${CMAKE_COMMAND} -E copy_if_different gen-byproduct-stamp byproduct
  )
set_property(SOURCE gen-byproduct PROPERTY SYMBOLIC 1)
add_custom_target(produce DEPENDS gen-byproduct)

add_custom_command(
  OUTPUT use-byproduct
  DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/byproduct
  COMMAND ${CMAKE_COMMAND} -E sleep 1.125 # workaround buggy filesystem timestamps
  COMMAND ${CMAKE_COMMAND} -E touch use-byproduct
  )
add_custom_target(drive ALL DEPENDS use-byproduct)
add_dependencies(drive produce)

file(GENERATE OUTPUT check-$<LOWER_CASE:$<CONFIG>>.cmake CONTENT "
if (check_step EQUAL 1)
  set(check_pairs
    \"${CMAKE_CURRENT_BINARY_DIR}/use-byproduct|${CMAKE_CURRENT_BINARY_DIR}/gen-byproduct-stamp\"
    )
else()
  set(check_pairs
    \"${CMAKE_CURRENT_BINARY_DIR}/gen-byproduct-stamp|${CMAKE_CURRENT_BINARY_DIR}/use-byproduct\"
    )
endif()
")