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 ${CMAKE_CURRENT_BINARY_DIR}/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()
")