mit-plv/fiat-crypto

make bedrock2-files is broken

Closed this issue · 1 comments

I tried to run make bedrock2-files and was met with the error /bin/sh: --lang: command not found. Indeed, when I have the Makefile target print out the command it's trying to run, I see:

(   --lang bedrock2 --no-wide-int --widen-carry --widen-bytes --split-multiret --no-select '25519' 64 '(auto)' '2^255 - 19' carry_mul carry_square carry add sub opp selectznz to_bytes from_bytes carry_scmul121666 && touch fiat-bedrock2/src/curve25519_64.c.ok) > fiat-bedrock2/src/curve25519_64.c.tmp

The Makefile line generating this line is:

($(TIMER) $($(BEDROCK2_$*_BINARY_NAME)) --lang bedrock2 $(BEDROCK2_ARGS) $($*_DESCRIPTION) $($*_ARGS) $($*_FUNCTIONS) && touch $@.ok) > $@.tmp

I can conclude that there's something going wrong with finding the right binary file, but there's too much Makefile magic for me to determine what exactly is going wrong. I think this might have happened in 890de05 . @JasonGross , can you fix it?

Other than regenerating the bedrock2 output, the change putting output pointers before input in the bedrock2 backend is ready to go.

Ah, indeed. Does changing $($(BEDROCK2_$*_BINARY_NAME)) to $(BEDROCK2_$($*_BINARY_NAME)) (and $$($$(BEDROCK2_$$*_BINARY_NAME)) to $$(BEDROCK2_$$($$*_BINARY_NAME)) in the rule dependency) fix things?