Subject: Compiling extensions using Guile 3.0.2 headers doesn't work with clang without -std=c11

From: Vadim Zeitlin <[email-masked]>
Date: Fri, 22 May 2020 22:42:00 +0200

Hello,

 I'm am not sure how useful this is because I don't know anything about
Guile, but I contribute to the SWIG project which generates Guile bindings
among other things and I noticed that one of the CI builds started failing
since the upgrade from 2.2.7 to 3.0.2 version due to the errors like this:

---------------------------------- >8 --------------------------------------
In file included from example_wrap.c:739:
In file included from /usr/local/Cellar/guile/3.0.2/include/guile/3.0/libguile.h:35:
In file included from /usr/local/Cellar/guile/3.0.2/include/guile/3.0/libguile/array-handle.h:27:
In file included from /usr/local/Cellar/guile/3.0.2/include/guile/3.0/libguile/numbers.h:29:
/usr/local/Cellar/guile/3.0.2/include/guile/3.0/libguile/print.h:79:3: error: redefinition of typedef 'scm_print_state' is a C11 feature [-Werror,-Wtypedef-redefinition]
} scm_print_state;
  ^
/usr/local/Cellar/guile/3.0.2/include/guile/3.0/libguile/scm.h:824:32: note: previous definition is here
typedef struct scm_print_state scm_print_state;
                               ^
In file included from example_wrap.c:739:
In file included from /usr/local/Cellar/guile/3.0.2/include/guile/3.0/libguile.h:38:
In file included from /usr/local/Cellar/guile/3.0.2/include/guile/3.0/libguile/async.h:25:
In file included from /usr/local/Cellar/guile/3.0.2/include/guile/3.0/libguile/threads.h:27:
/usr/local/Cellar/guile/3.0.2/include/guile/3.0/libguile/dynstack.h:37:3: error: redefinition of typedef 'scm_t_dynstack' is a C11 feature [-Werror,-Wtypedef-redefinition]
} scm_t_dynstack;
  ^
/usr/local/Cellar/guile/3.0.2/include/guile/3.0/libguile/scm.h:825:29: note: previous definition is here
typedef struct scm_dynstack scm_t_dynstack;
                            ^
---------------------------------- >8 --------------------------------------

(see e.g. https://travis-ci.org/github/swig/swig/jobs/683649601 for the
actual build output).

 We're going to work around this in SWIG by adding -std=c11 to the compiler
options, but it would probably be better to avoid this problem without it
too, unless Guile really requires C11.

 Best regards,
VZ