tikzexternalize, list-and-make, list of figures to be updated

This here may address the problem at hand, although I might have missed some point.

First, your basic assumption that you "need to use list and make instead of convert with system call" is outdated: Some decent version (*) of the external lib comes with support for \ref inside of pictures relying on the default convert with system call. The solution is based on a detection that the image contains an undefined reference. It then writes some special marker into the image's .dpth file. Later-on, this marker is read and the image will be reconverted during \end{document}, assuming that the reference is available then.

Thus, one solution to the problem "I need to handle \ref inside of my external images" might be to update to a decent version of the external lib and use convert with system call. Such a decent version is probably shipped with pgfplots, i.e.

\usepackage{pgfplots}
\usepgfplotslibrary{external}
\tikzexternalize

might do the trick.

(*) At the time of this writing, the "decent version" needs to be defined properly:

  1. the external library as it is shipped and documented in the current stable PGF 3.0.1a does not contain the mentioned feature.
  2. a copy of the external library is shipped with pgfplots. This one is always at least as recent as the version shipped with PGF. At the time of this writing, it is more recent and comes with the mentioned feature. If you write \usepgfplotslibrary{external}, the code checks if the version available as part of PGF happens to be more recent. If so, the version of PGF will be used. If not, the copy shipped with pgfplots will be used. Eventually, both will be in sync, but PGF's release cycle is way longer. That means that you are always better off with \usepgfplotslibrary{external} (at the cost of loading pgfplots).

That said, if you want to know which figures need to be remade due to a changed MD5, you can check if the file fig-0.pdf is older than the file fig-0.md5.

Note that the line

fig-0.pdf: fig-0.md5

in the Makefile does the same trick. And running LaTeX on the main file will update the .md5 file if and only if the MD5 has changed.