When Make detects that it is running under another Make process, it prints
out "Entering directory ..." / "Leaving directory ..." messages which find
their way into the test log, and mess up the output. Normally the -s flag
is supposed to silence these messages, but it seems that GNU Make requires
an extra flag --no-print-directory here.
This sets up a global intest variable for Make flags, that is usually just
-s, but on Linux the extra flag is added.
I guess this worked as written in Clang, but GCC interprets the
declaration without "extern" as a definition, meaning that the actual
definition later in inform7_clib.c counts as a double definition.
GCC warns that ka[1] is possibly being used without being initialized. As
far as I can tell from reading the loop, a1 > 0 here, and the elements of
ka are initialized up to a1-1, and ka[1] is never accessed if a1 == 1.
Nonetheless, rather than rewriting the loop so GCC can understand what's
going on, maybe it's better just to put an initializer here.
GCC warns about this, since it can't rule out that Q_sp may be 0 at this
point. I haven't understood the code well enough to be certain, but it
can't hurt to guard against that case with an internal error anyway.
GCC warns about switch statement fall-throughs unless they are annotated
with a /* fall through */ comment. Add one of these.
As for the other comment, GCC also has a slightly less strict mode that
understands the comment as long as it has the words "fall through"
somewhere in it. If we slightly tweak the wording of this comment, we can
use that mode to avoid the warning.