Best 90 minutes I've ever spent in my life. I could've done string
comparisons, but somehow I suspect their format is more likely to change
in the future than the numeric versions.
Also, beware that the upstream documentation (both on their wiki and
their source) does not accurately reflect history -- the version numbers
for releases between 0.9.3 and 0.9.5 were vastly different, and this
version of the algorithm I wrote seems to be the best fit for all of
them.)
Turns out I mistook @celticminstrel's opinion that we should use include guards over pragma (737916e).
Since all major compilers support `#pragma once`, there's no reason not to use it.
For future mergability reasons, this excludes src/spirit_po and src/xBRZ. It also excludes src/boost-patched.
Registers library versions in a single structure that can be queried
later as many times as necessary (say, from the game UI) instead of
relying on recording this information in different object files in an
inconsistent fashion. Also, it provides a pretty formatter for console
usage (e.g., in --version).
libpng also gets to join in the fun.