You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
bnfc has its own logic of preserving unchanged files that makes it incompatible with make. GNU make expects a target to get the current time stamp if the action is run that creates it or refreshes it from its dependencies. Since bnfc is "clever" and does not recreate unchanged files, it will be called every time by make should there be any target older than the .cf file.
This contradicts the principle that make should be idempotent. More precisely, the second call to make in a row should report nothing to do for a properly written Makefile.
The text was updated successfully, but these errors were encountered:
After the change, bnfc will recreate all its targets. If no change has occurred, the old .bak files will be preserved. In summary, the only change is that the targets will always get the current timestamp.
Maybe the motivation for the present behavior was that bnfc should have some make functionality itself. But since it does not go all the way to the end, like calling lexer and parser generators, it was only going halfway and would not integrate with make.
bnfc
has its own logic of preserving unchanged files that makes it incompatible withmake
. GNUmake
expects a target to get the current time stamp if the action is run that creates it or refreshes it from its dependencies. Sincebnfc
is "clever" and does not recreate unchanged files, it will be called every time bymake
should there be any target older than the.cf
file.This contradicts the principle that
make
should be idempotent. More precisely, the second call tomake
in a row should reportnothing to do
for a properly writtenMakefile
.The text was updated successfully, but these errors were encountered: