diff --git a/libguile/guile-snarf.in b/libguile/guile-snarf.in index cb8d4d1e2..cf735541c 100644 --- a/libguile/guile-snarf.in +++ b/libguile/guile-snarf.in @@ -21,21 +21,22 @@ # Commentary: # Usage: guile-snarf [-o OUTFILE] INFILE [CPP-OPTIONS ...] -# +# # Process INFILE using the C pre-processor and some other programs. # Write output to a file named OUTFILE or to the standard output when no -# OUTFILE has been specified or when OUTFILE is "-". When writing -# to a file, ignore lines from the input matching the following grep(1) -# regular expression: -# -# ^#include ".*OUTFILE" -# +# OUTFILE has been specified or when OUTFILE is "-". +# # If there are errors during processing, delete OUTFILE and exit with # non-zero status. -# +# # During snarfing, the pre-processor macro SCM_MAGIC_SNARFER is -# defined. -# +# defined. You can use this to avoid including snarfer output files +# that don't yet exist by writing code like this: +# +# #ifndef SCM_MAGIC_SNARFER +# #include "foo.x" +# #endif +# # If env var CPP is set, use its value instead of the C pre-processor # determined at Guile configure-time: "@CPP@". @@ -77,15 +78,7 @@ if [ x"$CPP" = x ] ; then cpp="@CPP@" ; else cpp="$CPP" ; fi trap "rm -f $temp" 0 1 2 15 if [ ! "$outfile" = "-" ] ; then - self_blind_regexp='^#include ".*'`basename $outfile`'"' - clean_infile=$infile.clean.c # temp file in same dir as infile - # so that #include "foo" works - # (e.g., see libguile/eval.c). - # use .c to satisfy cpp heuristics. - # clean input file - trap "rm -f $cleanfile" 0 1 2 15 - grep -v "$self_blind_regexp" $infile > $clean_infile - modern_snarf "$@" $clean_infile > $outfile + modern_snarf "$@" $infile > $outfile else modern_snarf "$@" $infile fi