On 11/14/13 16:46, Paul Eggert wrote:
Yes, that sounds right.  If user code employs SCM_NORETURN in that position
and you therefore you can't change SCM_NORETURN to mean _Noreturn, it might be 
simpler
to keep SCM_NORETURN the way it is for backwards compatibility.  But you
can change all its uses in Guile to be _Noreturn at the start of the 
declaration,
where _Noreturn is defined the Gnulib way.

Actually, internally to Guile I do not care in the slightest what gets used.

The problem I face is that the Guile headers were written with the presumption
that the token "noreturn" is not #defined to something else.  I seriously doubt
there are a lot of developers out there writing Guile call out functions with
the SCM_NORETURN attribute, so fretting a lot about it is unlikely to be
especially useful.  What is crucial is fixing the headers so they
do not break.  That's been done.

I do think it is also important to know that stable distributions do not
jump on the next major release until it has proven to be stable.  And,
yes, often times current releases of other tools get built for "stable"
platforms.  That means my current stuff needs to build against the 1.8.x
releases of Guile.  In fact, it gets built against 1.6.x releases of Guile.
That's why I have hundreds of lines of Guile compatibility cruft -- just
to cope with changes.

Attached is a shell script that I think I can distribute and forget about.
My hope is that I can distribute the thing for the next decade while
the "__attribute__ ((__noreturn__))" variation propagates everywhere.
It gets invoked from the Makefile.am thus:

diff --git a/autoopts/Makefile.am b/autoopts/Makefile.am
index 3f2f3ad..137ec51 100644
--- a/autoopts/Makefile.am
+++ b/autoopts/Makefile.am
@@ -164,4 +164,10 @@ install-data-hook:

 .NOTPARALLEL:

+if GL_GENERATE_STDNORETURN_H
+$(STDNORETURN_H) : libguile/__scm.h
+libguile/__scm.h :
+       $(SHELL) $(srcdir)/fix-guile.sh $(LIBGUILE_CFLAGS)
+endif
+

Attachment: fix-guile.sh
Description: application/shellscript

Reply via email to