blob: b1e8e9779b4d129c94276f563b9d3bffe23d18ae [file] [log] [blame]
# Check that we match some amount of brokenness w.r.t. Ninja's handling of
# inputs to phony rules.
#
# This is particularly important because CMake writes its phony rules wrong and
# writes out a cyclic dependency.
#
# Unfortunately, the way this actually works in Ninja is subtle. What happens is
# that Ninja in general does not detect a cyclic dependency except through an
# output it believes is out-of-date. Whether or not it marks a phony edge as
# out-of-date depends on how it marked the "outputs ready" flag on the inputs,
# and it sets this on the output before it iterates over the inputs.
#
# See: https://github.com/martine/ninja/issues/935
#
# RUN: rm -rf %t.build
# RUN: mkdir -p %t.build
# RUN: cp %s %t.build/build.ninja
# RUN: %{llbuild} ninja build --no-db --jobs 1 --chdir %t.build &> %t1.out
# RUN: %{FileCheck} --input-file %t1.out %s
#
# CHECK: llbuild: note: no work to do.
build output-1: phony output-1
build output-2: phony | output-2
build output-3: phony || output-3
build output: phony output-1 output-2 output-3
default output