guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] GNU Guile branch, master, updated. release_1-9-11-210-g6


From: Thien-Thi Nguyen
Subject: [Guile-commits] GNU Guile branch, master, updated. release_1-9-11-210-g648da03
Date: Thu, 22 Jul 2010 12:11:40 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Guile".

http://git.savannah.gnu.org/cgit/guile.git/commit/?id=648da032599d696c34c9ff2bf9cd1de27987b7a3

The branch, master has been updated
       via  648da032599d696c34c9ff2bf9cd1de27987b7a3 (commit)
      from  12427934dea09d25fc112c4255a96ef24713af0f (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 648da032599d696c34c9ff2bf9cd1de27987b7a3
Author: Thien-Thi Nguyen <address@hidden>
Date:   Thu Jul 22 13:59:12 2010 +0200

    [build] Overhaul <errno.h>, <signal.h> cpp symbol extraction/checking.
    
    * libguile/Makefile.am (BUILT_SOURCES): Delete cpp_err_symbols.c,
      cpp_sig_symbols.c; add cpp-E.c, cpp-SIG.c.
      (EXTRA_DIST): Delete cpp_signal.c, cpp_errno.c, cpp_err_symbols.in,
      cpp_err_symbols.c, cpp_sig_symbols.c, cpp_sig_symbols.in, cpp_cnvt.awk;
      add cpp-E.syms, cpp-E.c, cpp-SIG.syms, cpp-SIG.c.
      (error.x, posix.x): Update prereq list.
      (cpp_err_symbols.c, cpp_sig_symbols.c): Delete targets.
      (check_signals, check_errnos): Likewise.
      (.syms.c): New pattern rule.
      (chknew-E, chknew-SIG): New targets.
      (MOSTLYCLEANFILES): Delete cpp_err_symbols_here, cpp_err_symbols_diff,
      cpp_err_symbols_new, cpp_sig_symbols_here, cpp_sig_symbols_diff,
      cpp_sig_symbols_new.
    * libguile/cpp-E.syms: Rename from libguile/cpp_err_symbols.in.
    * libguile/cpp-SIG.syms: Rename from libguile/cpp_sig_symbols.in.
    * libguile/error.c (scm_init_error): #include "libguile/cpp-E.c".
    * libguile/posix.c (scm_init_posix): #include "libguile/cpp-SIG.c".
    * libguile/cpp_cnvt.awk: Delete file.
    * libguile/cpp_errno.c: Delete file.
    * libguile/cpp_signal.c: Delete file.

-----------------------------------------------------------------------

Summary of changes:
 libguile/Makefile.am                          |  102 +++++++++++++------------
 libguile/{cpp_err_symbols.in => cpp-E.syms}   |    0
 libguile/{cpp_sig_symbols.in => cpp-SIG.syms} |    0
 libguile/cpp_cnvt.awk                         |    7 --
 libguile/cpp_errno.c                          |    9 --
 libguile/cpp_signal.c                         |    9 --
 libguile/error.c                              |    2 +-
 libguile/posix.c                              |    2 +-
 8 files changed, 56 insertions(+), 75 deletions(-)
 rename libguile/{cpp_err_symbols.in => cpp-E.syms} (100%)
 rename libguile/{cpp_sig_symbols.in => cpp-SIG.syms} (100%)
 delete mode 100644 libguile/cpp_cnvt.awk
 delete mode 100644 libguile/cpp_errno.c
 delete mode 100644 libguile/cpp_signal.c

diff --git a/libguile/Makefile.am b/libguile/Makefile.am
index 5eea8dc..6a33473 100644
--- a/libguile/Makefile.am
+++ b/libguile/Makefile.am
@@ -415,7 +415,7 @@ DOT_I_FILES = vm-i-system.i vm-i-scheme.i vm-i-loader.i
 .c.i:
        $(AM_V_GEN)$(GREP) '^VM_DEFINE' $< > $@
 
-BUILT_SOURCES = cpp_err_symbols.c cpp_sig_symbols.c libpath.h \
+BUILT_SOURCES = cpp-E.c cpp-SIG.c libpath.h \
     version.h scmconfig.h \
     $(DOT_I_FILES) $(DOT_X_FILES) $(EXTRA_DOT_X_FILES)
 
@@ -596,9 +596,8 @@ bin_SCRIPTS = guile-snarf
 noinst_SCRIPTS = guile-doc-snarf guile-snarf-docs guile-func-name-check
 
 EXTRA_DIST = ChangeLog-scm ChangeLog-threads           \
-    ChangeLog-1996-1999 ChangeLog-2000 ChangeLog-2008 cpp_signal.c     \
-    cpp_errno.c cpp_err_symbols.in cpp_err_symbols.c                   \
-    cpp_sig_symbols.c cpp_sig_symbols.in cpp_cnvt.awk                  \
+    ChangeLog-1996-1999 ChangeLog-2000 ChangeLog-2008  \
+    cpp-E.syms cpp-E.c cpp-SIG.syms cpp-SIG.c                  \
     c-tokenize.lex version.h.in                                                
\
     scmconfig.h.top libgettext.h unidata_to_charset.pl libguile.map
 #    $(DOT_DOC_FILES) $(EXTRA_DOT_DOC_FILES) \
@@ -674,8 +673,8 @@ $(DOT_X_FILES) $(EXTRA_DOT_X_FILES): scmconfig.h snarf.h 
guile-snarf.in
 
 $(DOT_DOC_FILES) $(EXTRA_DOT_DOC_FILES): scmconfig.h snarf.h 
guile-snarf-docs.in guile_filter_doc_snarfage$(EXEEXT)
 
-error.x: cpp_err_symbols.c
-posix.x: cpp_sig_symbols.c
+error.x: cpp-E.c
+posix.x: cpp-SIG.c
 load.x: libpath.h
 
 alldotdocfiles    = $(DOT_DOC_FILES) $(EXTRA_DOT_DOC_FILES)
@@ -710,50 +709,57 @@ schemelib_DATA = guile-procedures.txt
 ## Add -MG to make the .x magic work with auto-dep code.
 MKDEP = gcc -M -MG $(DEFS) $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS)
 
-cpp_err_symbols.c: cpp_err_symbols.in cpp_cnvt.awk
-       $(AWK) -f $(srcdir)/cpp_cnvt.awk < $(srcdir)/cpp_err_symbols.in > \
-               cpp_err_symbols.tmp
-       mv cpp_err_symbols.tmp cpp_err_symbols.c
-
-cpp_sig_symbols.c: cpp_sig_symbols.in cpp_cnvt.awk
-       $(AWK) -f $(srcdir)/cpp_cnvt.awk < $(srcdir)/cpp_sig_symbols.in > \
-               cpp_sig_symbols.tmp
-       mv cpp_sig_symbols.tmp cpp_sig_symbols.c
-
-## Create a new version of the cpp_sig_symbols.in file, including all SIGXXX
-## macros defined on this platform.
-check_signals:
-       gcc -undef -dM -E $(srcdir)/cpp_signal.c | $(EGREP) ' SIG[A-Z]+' \
-         | cut -f2 -d' ' | sort > cpp_sig_symbols_here
-       diff -u $(srcdir)/cpp_sig_symbols.in cpp_sig_symbols_here \
-          | $(EGREP) '^\+S' \
-         | cut -c2- > cpp_sig_symbols_diff
-       if test -s cpp_sig_symbols_diff ; then \
-         cat $(srcdir)/cpp_sig_symbols.in cpp_sig_symbols_diff \
-           | sort > cpp_sig_symbols_new ;\
-         echo "cpp_sig_symbols_new has the following additions:" ;\
-         cat cpp_sig_symbols_diff ;\
-       else echo "No new symbols found."; \
-       fi
-
-## Likewise for cpp_err_symbols.in.
-check_errnos:
-       gcc -undef -dM -E $(srcdir)/cpp_errno.c | $(EGREP) ' E.+' \
-         | cut -f2 -d' ' | sort > cpp_err_symbols_here
-       diff -u $(srcdir)/cpp_err_symbols.in cpp_err_symbols_here \
-          | $(EGREP) '^\+E' \
-         | cut -c2- > cpp_err_symbols_diff
-       if test -s cpp_err_symbols_diff ; then \
-         cat $(srcdir)/cpp_err_symbols.in cpp_err_symbols_diff \
-           | sort > cpp_err_symbols_new ;\
-         echo "cpp_err_symbols_new has the following additions:" ;\
-         cat cpp_err_symbols_diff ;\
-       else echo "No new symbols found."; \
-       fi
+
+# This page is for maintenance of the lists of CPP symbols that are eventually
+# included in error.c (‘errno’ values: E*) and posix.c (signal names: 
SIG*),
+# in the funcs scm_init_{error,posix}, respectively.
+#
+# The lists (files cpp-{E,SIG}.syms) are not included verbatim, but processed
+# (via pattern rule ‘.syms.c’ below) so that each CPP symbol is 
transformed to
+# fragment of #ifdef'd C code that defines a Scheme variable of the same name.
+# The resulting files, cpp-{E,SIG}.c, are the ones #include:d.
+#
+# To maintain the (source) lists of symbols, we use a GCC-specific feature
+# to list all symbols #define:d when expanding <{errno,signal}.h>, grep
+# the output for {E,SIG}*, massage the result into a usable form, and
+# construct a union of the current and new symbols.  This is written to
+# files cpp-{E,SIG}.syms.NEW for review.  If things look ok, you can then
+# "mv foo.NEW foo" and commit.  Generating the foo.NEW files and showing
+# an informative message is the job of targets chknew-{E,SIG}.
+
+# For each line in foo.syms, transform:
+#      SYMBOL
+# to:
+#      #ifdef SYMBOL
+#      scm_c_define ("SYMBOL", scm_from_int (SYMBOL));
+#      #endif
+# writing output to foo.c.
+.syms.c:
+       sed 's/.*/#ifdef &\nscm_c_define ("&", scm_from_int (&));\n#endif/' \
+         $< > address@hidden
+       mv address@hidden $@
+
+# Write $(srcdir)/cpp-{E,SIG}.syms.NEW if there are any not-yet-seen
+# ("new" to us) E* or SIG* symbols in <errno.h> or <signal.h>, respectively.
+chknew-E chknew-SIG:
+       @bit=`echo $@ | sed s/^chknew-//` ;                     \
+       old="$(srcdir)/cpp-$$bit.syms" ;                        \
+       echo "#include <$${bit}.h>"                             \
+        | sed 's/E/errno/;s/SIG/signal/'                       \
+        | gcc -undef -dM -E -                                  \
+        | sed 's/^#define //;/^'$$bit'[A-Z][A-Z]*/!d;s/ .*//'  \
+        | sort | diff -u $$old - | sed '1,2d;/^+/!d;s/^.//'    \
+        > TMP ;                                                \
+       if [ -s TMP ] ; then new="$$old.NEW" ;                  \
+         cat $$old TMP | sort > $$new ;                        \
+         echo "$$new: `sed -n '$$=' TMP` new symbol(s)." ;     \
+         sed 's/^/  /' TMP ;                                   \
+       else echo "No new symbols found." ;                     \
+       fi ; rm TMP
+
+
 
 MOSTLYCLEANFILES = \
-       cpp_err_symbols_here cpp_err_symbols_diff cpp_err_symbols_new \
-       cpp_sig_symbols_here cpp_sig_symbols_diff cpp_sig_symbols_new \
        version.h version.h.tmp \
        scmconfig.h scmconfig.h.tmp
 
diff --git a/libguile/cpp_err_symbols.in b/libguile/cpp-E.syms
similarity index 100%
rename from libguile/cpp_err_symbols.in
rename to libguile/cpp-E.syms
diff --git a/libguile/cpp_sig_symbols.in b/libguile/cpp-SIG.syms
similarity index 100%
rename from libguile/cpp_sig_symbols.in
rename to libguile/cpp-SIG.syms
diff --git a/libguile/cpp_cnvt.awk b/libguile/cpp_cnvt.awk
deleted file mode 100644
index 1e6c094..0000000
--- a/libguile/cpp_cnvt.awk
+++ /dev/null
@@ -1,7 +0,0 @@
-# Converts a list of symbols into C expressions which define the symbols
-# in Guile.
-{
-print "#ifdef " $0;
-print "scm_c_define (\""$0"\", scm_from_int ("$0"));";
-print "#endif"
-}
diff --git a/libguile/cpp_errno.c b/libguile/cpp_errno.c
deleted file mode 100644
index 32556a3..0000000
--- a/libguile/cpp_errno.c
+++ /dev/null
@@ -1,9 +0,0 @@
-/* this file is processed by gcc with special options to extract
-   a list of errno codes.  */
-#include <errno.h>
-
-/*
-  Local Variables:
-  c-file-style: "gnu"
-  End:
-*/
diff --git a/libguile/cpp_signal.c b/libguile/cpp_signal.c
deleted file mode 100644
index e740ba5..0000000
--- a/libguile/cpp_signal.c
+++ /dev/null
@@ -1,9 +0,0 @@
-/* this file is processed by gcc with special options to extract
-   a list of signal numbers.  */
-#include <signal.h>
-
-/*
-  Local Variables:
-  c-file-style: "gnu"
-  End:
-*/
diff --git a/libguile/error.c b/libguile/error.c
index bcbcd9c..a582c86 100644
--- a/libguile/error.c
+++ b/libguile/error.c
@@ -285,7 +285,7 @@ scm_misc_error (const char *subr, const char *message, SCM 
args)
 void
 scm_init_error ()
 {
-#include "libguile/cpp_err_symbols.c"
+#include "libguile/cpp-E.c"
 #include "libguile/error.x"
 }
 
diff --git a/libguile/posix.c b/libguile/posix.c
index 6276478..a28cfa3 100644
--- a/libguile/posix.c
+++ b/libguile/posix.c
@@ -2195,7 +2195,7 @@ scm_init_posix ()
   scm_c_define ("LOCK_NB", scm_from_int (LOCK_NB));
 #endif
 
-#include "libguile/cpp_sig_symbols.c"
+#include "libguile/cpp-SIG.c"
 #include "libguile/posix.x"
 }
 


hooks/post-receive
-- 
GNU Guile



reply via email to

[Prev in Thread] Current Thread [Next in Thread]