tree 3cee984032db309f0a2e2a79a338f0a0bb58d621
parent de86ec4176235871a7cb335756987e41246dae4a
author Filip Filmar <fmil@google.com> 1632447282 -0700
committer Commit Bot <commit-bot@chromium.org> 1632450557 +0000

Corrects the generation of .stamp file names.

When output_name is defined, only the output artifact should be
renamed, not the target's stamp file.

Renaming the stamp file too prevents a refactoring from:

    source_set("examples_gn_hello") {
      sources = [ "lib.cc" ]
    }

to:

    # Creates a file examples_gn_hello.stamp
    group("examples_gn_hello") {
      public_deps = [ ":actual_target" ]
    }

    # Creates a file examples_gn_hello.stamp
    #    ... but should be actual_target.stamp
    #    ... but the artifact output name should still be libexamples_gn_hello.a.
    source_set("actual_target") {
      sources = [ "lib.cc" ]
      output_name = "examples_gn_hello"
    }

Both above targets try to generate the file
examples_gn_hello.stamp, which is an error.

How does this situation come up?  Originally there was
a source_set("examples_gn_hello"), but through refactoring
we added a layer of indirection.  In theory this would be
a correct thing to do, but the implementation detail of the stamp file
naming results in a colission.

Note that because of the requirement that the end product, the library, to
still be named `libexamples_gn_hello`, we can not change the output_name.
Also, because the target //examples/gn:examples_gn_hello is used downstream,
we can not rename it because it would break downstream users.

Change-Id: I8e0adbd73d2bca3aecf61bfe01696bbd75335232
Reviewed-on: https://gn-review.googlesource.com/c/gn/+/12220
Reviewed-by: Roland McGrath <mcgrathr@google.com>
Commit-Queue: Roland McGrath <mcgrathr@google.com>
