diff options
author | Thien-Thi Nguyen <ttn@gnuvola.org> | 2010-08-26 18:36:48 +0200 |
---|---|---|
committer | Thien-Thi Nguyen <ttn@gnuvola.org> | 2010-08-26 18:36:48 +0200 |
commit | e6d67f1e6913acb884dbacc48670d312e9880782 (patch) | |
tree | 26b05bad87a60d02fedceae73e34b5eb824fe081 | |
parent | d5a1a8cd1bb143e052d6014c160a39665968ded5 (diff) | |
download | guile-e6d67f1e6913acb884dbacc48670d312e9880782.tar.gz |
[build] Refine libguile/*.doc snarfing.
* libguile/guile-snarf-docs.in: Rewrite to incorporate all
three phases of snarfing: func-name check, cpp, tokenization.
Also, require/check new command-line syntax.
* libguile/Makefile.am (AM_V_FILTER): Delete var.
(AM_V_FILTER_, AM_V_FILTER_0): Likewise.
(.c.doc): Run ./guile-snarf-docs; use new command-line syntax.
-rw-r--r-- | libguile/Makefile.am | 6 | ||||
-rwxr-xr-x | libguile/guile-snarf-docs.in | 56 |
2 files changed, 50 insertions, 12 deletions
diff --git a/libguile/Makefile.am b/libguile/Makefile.am index d2772275f..d2f349bde 100644 --- a/libguile/Makefile.am +++ b/libguile/Makefile.am @@ -648,14 +648,10 @@ snarfcppopts = $(DEFS) $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS) SUFFIXES = .x .doc -AM_V_FILTER = $(AM_V_FILTER_$(V)) -AM_V_FILTER_ = $(AM_V_FILTER_$(AM_DEFAULT_VERBOSITY)) -AM_V_FILTER_0 = @echo " FILTER" $@; - .c.x: $(AM_V_SNARF)$(GUILE_SNARF) -o $@ $< $(snarfcppopts) .c.doc: - -$(AM_V_FILTER)$(AWK) -f $(srcdir)/guile-func-name-check $< && (./guile-snarf-docs $(snarfcppopts) $< | ./guile_filter_doc_snarfage$(EXEEXT) --filter-snarfage) > $@ || { rm $@; false; } + $(AM_V_SNARF)./guile-snarf-docs -o $@ $< -- $(snarfcppopts) $(DOT_X_FILES) $(EXTRA_DOT_X_FILES): scmconfig.h snarf.h guile-snarf.in version.h diff --git a/libguile/guile-snarf-docs.in b/libguile/guile-snarf-docs.in index 1e57f2624..c33a5ec33 100755 --- a/libguile/guile-snarf-docs.in +++ b/libguile/guile-snarf-docs.in @@ -1,26 +1,68 @@ #!/bin/sh -# Extract the doc stuff for builtin things. +# guile-snarf-docs --- Extract the doc stuff for builtin things. +## +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, +# 2006, 2010 Free Software Foundation, Inc. # -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2006 Free Software Foundation, Inc. -# # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as # published by the Free Software Foundation; either version 3, or (at # your option) any later version. -# +# # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. -# +# # You should have received a copy of the GNU Lesser General Public # License along with this software; see the file COPYING.LESSER. If # not, write to the Free Software Foundation, Inc., 51 Franklin # Street, Fifth Floor, Boston, MA 02110-1301 USA +## +# Usage: guile-snarf-docs -o DOC SRC -- [CPPSNARFOPTS...] +## -bindir=`dirname $0` +filter='./guile_filter_doc_snarfage@EXEEXT@' ## Let the user override the preprocessor autoconf found. test -n "${CPP+set}" || CPP="@CPP@" -${CPP} -DSCM_MAGIC_SNARF_DOCS "$@" +## Likewise for AWK. +test -n "${AWK+set}" || AWK="@AWK@" + +bummer () +{ + echo 'Bad command-line' $1 + exit 1 +} + +test "x$1" = x-o || bummer +shift + +test "x$1" = x && bummer ': missing DOC' +output="$1" +temout="$output"T +shift + +test "x$1" && test -r "$1" || bummer ': missing SRC' +input="$1" +shift + +test "x$1" = x-- || bummer +shift + +# Before snarfing, do the function name check. +${AWK} -f '@srcdir@/guile-func-name-check' "$input" || exit 1 + +# Snarfing takes two steps: cpp and tokenization. +# If cpp fails, don't bother with tokenization. +if ${CPP} -DSCM_MAGIC_SNARF_DOCS "$@" "$input" > "$temout" ; then + $filter --filter-snarfage < "$temout" > "$output" + rv=0 +else + rv=1 +fi +rm -f "$temout" +exit $rv + +# guile-snarf-docs ends here |