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

From: Sevan Janiyan <[email-masked]>
Date: Tue, 1 Aug 2023 02:38:57 +0100

Hi,
Redefinitions are part of C11 and compilers which support C11 and 
default to C11 mode would have masked the issue which is why we are 
here. Because of the redefinitions, it is not possible to build Guile 
with older compilers which only support C99.
I hit this issue attempting to build Guile 3.0.9 with GCC 4.0.1.
The first error being
   CC       libgnu_la-regex.lo
In file included from ../libguile/threads.h:27,
                  from glthread/lock.h:27,
                  from regex_internal.h:56,
                  from regex.c:71:
../libguile/dynstack.h:37: error: redefinition of typedef 'scm_t_dynstack'
../libguile/scm.h:825: error: previous declaration of 'scm_t_dynstack' 
was here
In file included from ../libguile/smob.h:28,
                  from ../libguile/threads.h:29,
                  from glthread/lock.h:27,
                  from regex_internal.h:56,
                  from regex.c:71:
../libguile/print.h:79: error: redefinition of typedef 'scm_print_state'
../libguile/scm.h:824: error: previous declaration of 'scm_print_state' 
was here
make[4]: *** [libgnu_la-regex.lo] Error 1

There's more issues after addressing these. I will follow up with a 
patch of what I took out for the build to succeed (not necessarily 
correct but to highlight where the issues are).

Sevan