+msgcode-test: msgcode-test.o
+ $(CC) $(LDFLAGS) $(ALL_CFLAGS) -o $@ $^
+
+msgcode-test.confirm: msgcode-test
+ ./msgcode-test
+ touch $@
+
+XDH_FUNCS = x25519 x448
+x25519_FIELD = f25519
+x448_FIELD = fgoldi
+
+$(addsuffix -test, $(XDH_FUNCS)): %-test: %-test.o %.o
+ $(CC) $(LDFLAGS) $(ALL_CFLAGS) -o $@ $^
+x25519-test: f25519.o
+x448-test: fgoldi.o
+
+$(addsuffix -test.o, $(XDH_FUNCS)): %-test.o: xdh-test.c
+ $(CC) $(CPPFLAGS) $(ALL_CFLAGS) -c \
+ -DXDH=$* -DFIELD=$($*_FIELD) \
+ $< -o $@
+
+$(addsuffix -test.confirm, $(XDH_FUNCS)): %-test.confirm: %-test %-tests.in
+ ./$*-test <$(srcdir)/$*-tests.in
+ touch $@
+