Another possible solution that doesn't change the API would be to encode the
version numbers into the system IDs. So, instead of:
#define SYSTEM_AUTODETECT 0
#define SYSTEM_NONE AL_ID('N','O','N','E')
#define SYSTEM_BEOS AL_ID('B','S','Y','S')
...
We could have something like that:
#define AL_SYSTEM_ID(x) \
(((x)<<24) | (ALLEGRO_VERSION<<16) | \
(ALLEGRO_SUB_VERSION<<8) | (ALLEGRO_WIP_VERSION))
#define SYSTEM_AUTODETECT AL_SYSTEM_ID(0)
#define SYSTEM_NONE AL_SYSTEM_ID(1)
#define SYSTEM_BEOS AL_SYSTEM_ID(2)
...
Then install_allegro can extract the version numbers from the system ID, and
do the check. We get full compatibility, and the check is always done. This
is a bit hackish, but IMHO no more than turning install_allegro into a macro.