>> For starters, the output is wrong about the command issued.

> This part is on purpose.

Why tell the user the wrong thing?

-           -L $(dir $@) -f batch-byte-compile $<
+           $(patsubst %, -L %, $(filter-out %/cl-lib, $(pkgs))) \
+           -f batch-byte-compile $<

This allowed make to run to completion.

Using a sufficiently new Emacs executable helped too.