Skip to content
  • Brad King's avatar
    Use first custom command for the same output (#14446) · dccd4949
    Brad King authored
    In buggy code like
    
     add_custom_command(
       OUTPUT  ${CMAKE_CURRENT_BINARY_DIR}/out.h
       MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/out.h.in
       ...)
     add_custom_command(
       OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/out.h
       ...)
    
    that has more than one rule to generate the same output CMake has always
    used the first rule.  However, since commit 2268c41a (Optimize custom
    command full-path dependency lookup, 2013-08-06) we update the map from
    output to cmSourceFile for every rule generating an output, effectively
    keeping the last command instead of the first.
    
    Fix this regression by checking for each map update if the output
    already has an entry.  If so, keep only the original entry.  The VS 8
    generator triggers this with a special case for generate.stamp rules
    that differ between ZERO_CHECK and normal targets, so do not warn for
    now.  Leave a TODO comment for warning in the future.
    dccd4949