Hello dear developers of a Make, Our team faced some race problems while building a project with Make.
Precise analysis shows that the problem was in fact, that Make doesn't care if we have different aliases for the same target. For example: ``` .PHONY: all ../1/../main.o ../2/../main.o all: ../1/../main.o ../2/../main.o ../1/../main.o: ccache gcc -o $@ -c ../main.c ../2/../main.o: ccache gcc -o $@ -c ../main.c ``` Here, we have 2 targets: ../1/../main.o ../2/../main.o In fact, this is the same target/file (taking into account relative directories). As a result if Make will create several threads (for each target) main.o file will be fritten concurrently (race condition). Make doesn't operate in a wrong way. Anyway, I think it would be great to have an additional checker in a Makefile which (at least) will notify the operator about the problem in a Makefile. P.S. Makefile project, using which it is possible to reproduce the problem is attached to this mail.
build_race.tar
Description: Binary data