Imported Upstream version 20011021

parent ce7d4575
gwave was written by Steve Tell <tell@cs.unc.edu>
gwave was written by Steve Tell <tell@cs.unc.edu> or <steve@telltronics.org>
20010327
Completed the basics of having two displayed measurements by adding
a guile function and some menu code to flip between the
built-in "val(cursor1)" and "val(cursor1)-val(cursor0)" functions
for the second measurement.
20010822
Enhance file-reading to handle the spice3raw variant produced by
Silvaco's SmartSpice.
Handle log scales properly for plotting with GNU Graph.
20010911
Better handling of logscale-X, zooming and scrollbar due to a
patch from Paul Maurer
20010927
configure now rejects non-GNU versions of "graph" even if they're
earlier in $PATH
20011020
Clean abort with better error message if we can't find the scheme
files or they're fouled up
Some installation notes for gwave.
Prerequesites:
Gtk-1.2 (http://www.gtk.org/)
Guile (http://www.gnu.org/software/guile/guile.html)
Guile-Gtk (http://www.ping.de/sites/zagadka/guile-gtk/)
GNU Plotutils-2.2 or later (optional, only used for ploting/exporting)
On Red Hat 6.2 Linux, I use these RPMs:
gtk+-1.2.6-7 (included in RH6.2)
gtk+-devel-1.2.6-7 (included in RH6.2)
glib-1.2.6-7 (included in RH6.2)
glib-devel-1.2.6-7 (included in RH6.2)
guile-gtk-0.19-1
http://www.ping.de/sites/zagadka/guile-gtk/download/guile-gtk-0.19.tar.gz
guile-1.4-2sgt
http://www.telltronics.org/~tell/dist/guile-1.4-2sgt.i386.rpm
http://www.telltronics.org/~tell/dist/guile-1.4-2sgt.src.rpm
An ancient version of guile shipped with RedHat 6.2.
It is unusable with gwave.
On RedHat 7.1, I use:
gtk+-1.2.9-4 (included in RH7.1)
gtk+-devel-1.2.9-4 (included in RH7.1)
glib-1.2.9-1 (included in RH7.1)
glib-devel-1.2.9-1 (included in RH7.1)
guile-gtk-0.19-1
guile-1.4-3sgt
On RedHat 7.1, you can also use the guile-1.3.4 that comes standard.
In that case, use guile-gtk 0.18
The guile-1.4 RPMs listed above are of my own construction (you've
been warned).
CAUTION: Use only a guile-gtk known to work with whatever version of
guile you have. Here are combinations known to work:
guile guile-gtk
1.4 0.19
1.3.4 0.18
1.3.4 0.17
Mixing guile-gtk 0.19 with guile-1.3.4 definitely fails,
as does guile-gtk 0.18 with guile-1.4.
I don't yet know of any guile-gtk for the guile-1.5.x prereleases or
the upcomming new guile-1.6 release.
Gwave may work with earlier versions of guile too, but I haven't
tested this recently. The Guile and guile-gtk shipped with RedHat
Linux even as late as release 6.2 are of this ancient category, and I
haven't tried building gwave with them recently.
I recommend verifying that guile, gtk, and guile-gtk all work
individualy before trying to build gwave using them. Gtk and
guile-gtk both come with "test-gtk" programs in their respective
examples directories which are ideal for this purpose.
** Please try this before reporting guile-gtk related problems with gwave.
In order to generate postscript or PNM file output, gwave requires GNU
graph, from the GNU plotutils package. The old berkely/sysv "graph"
program sometimes found on commercial unixes doesn't work. Configure
attempts to locate GNU graph and ignore other programs named "graph"
that may be found in $PATH. If the automatic detection doesn't work,
try somthing like this:
GRAPH="/path/to/gnu/graph" ./configure ...
Then, run configure as described below.
Running gwave without installing it.
------------------------------------
After compiling, you may wish to test gwave before doing a "make install."
Gwave normally looks for its guile support files beneath
$PREFIX/share/guile in the standard guile module structure; the
complete pathnames would be somthing like
$PREFIX/share/guile/app/gwave/cmds.scm
If gwave can't find any of its startup guile code, it aborts with a
moderately useful error message.
The GWAVE_GUILE_DIR environment variable can be used to make gwave
look in an alternate directory for these guile files. Set
GWAVE_GUILE_DIR to the full pathname of the src directory in this
distribution, for example if this file is called
/home/tell/build/gwave-20000301/INSTALL, set
GWAVE_GUILE_DIR=/home/tell/build/gwave-20000301/src
Basic Installation
==================
......
# -*- mode: Makefile -*-
## Process this file with automake to produce Makefile.in
SUBDIRS=spicefile
SUBDIRS=spicefile utilities src scheme doc remote
INCLUDES=-I$(srcdir)/spicefile
bin_PROGRAMS = gwave
gwave_SOURCES = cmd.c gtkmisc.h wavewin.c draw.c \
gwave.c event.c gwave.h gtkmisc.c pixmaps.c wavelist.c dnd.c print.c
gwave_LDADD = $(srcdir)/spicefile/libspicefile.a
gwave_LDFLAGS = @GTK_LIBS@
CFLAGS = @CFLAGS@ @GTK_CFLAGS@
# TODO: get autoconf/automake to compile/link with these if we don't
# HAVE_POSIX_REGEXP: regexp.h regexp.c regerror.c regmagic.h
MOSTLYCLEANFILES = core *~
CLEANFILES = core *~
DISTCLEANFILES = core *~
MAINTAINERCLEANFILES = core *~
EXTRA_DIST=regexp.tar.gz gwave.gtkrc autogen.sh
EXTRA_DIST=autogen.sh gwave.spec TODO
# distribute some extra directories that don't have anything to build
# or install in them
dist-hook:
mkdir $(distdir)/doc
cp -p doc/* $(distdir)/doc
mkdir $(distdir)/examples
cp -p examples/* $(distdir)/examples
mkdir $(distdir)/iconwork
cp -p iconwork/* $(distdir)/iconwork
rsync -C -p examples/* $(distdir)/examples
mkdir $(distdir)/icons
rsync -C -p icons/* $(distdir)/icons
......@@ -59,71 +59,48 @@ POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
AWK = @AWK@
CC = @CC@
GRAPH = @GRAPH@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_CONFIG = @GTK_CONFIG@
GTK_LIBS = @GTK_LIBS@
GUILEGTK_CFLAGS = @GUILEGTK_CFLAGS@
GUILEGTK_LIBS = @GUILEGTK_LIBS@
GUILE_CFLAGS = @GUILE_CFLAGS@
GUILE_LDFLAGS = @GUILE_LDFLAGS@
LN_S = @LN_S@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
PACKAGE = @PACKAGE@
PERL = @PERL@
RANLIB = @RANLIB@
READLINE_LIB = @READLINE_LIB@
VERSION = @VERSION@
bggtk = @bggtk@
ggtk_extra_loadpath = @ggtk_extra_loadpath@
ggtk_hack_cflags = @ggtk_hack_cflags@
ggtk_hack_dir = @ggtk_hack_dir@
ggtkhack_files = @ggtkhack_files@
SUBDIRS = spicefile
SUBDIRS = spicefile utilities src scheme doc remote
INCLUDES = -I$(srcdir)/spicefile
bin_PROGRAMS = gwave
gwave_SOURCES = cmd.c gtkmisc.h wavewin.c draw.c gwave.c event.c gwave.h gtkmisc.c pixmaps.c wavelist.c dnd.c print.c
gwave_LDADD = $(srcdir)/spicefile/libspicefile.a
gwave_LDFLAGS = @GTK_LIBS@
CFLAGS = @CFLAGS@ @GTK_CFLAGS@
# TODO: get autoconf/automake to compile/link with these if we don't
# HAVE_POSIX_REGEXP: regexp.h regexp.c regerror.c regmagic.h
MOSTLYCLEANFILES = core *~
CLEANFILES = core *~
DISTCLEANFILES = core *~
MAINTAINERCLEANFILES = core *~
EXTRA_DIST = regexp.tar.gz gwave.gtkrc autogen.sh
EXTRA_DIST = autogen.sh gwave.spec TODO
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES =
PROGRAMS = $(bin_PROGRAMS)
DEFS = @DEFS@ -I. -I$(srcdir) -I.
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
gwave_OBJECTS = cmd.o wavewin.o draw.o gwave.o event.o gtkmisc.o \
pixmaps.o wavelist.o dnd.o print.o
gwave_DEPENDENCIES = $(srcdir)/spicefile/libspicefile.a
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
CONFIG_CLEAN_FILES = gwave.spec
DIST_COMMON = README ./stamp-h.in AUTHORS COPYING ChangeLog INSTALL \
Makefile.am Makefile.in NEWS acconfig.h aclocal.m4 config.h.in \
configure configure.in install-sh missing mkinstalldirs
Makefile.am Makefile.in NEWS TODO acconfig.h acinclude.m4 aclocal.m4 \
config.h.in configure configure.in gwave.spec.in install-sh missing \
mkinstalldirs
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = gtar
GZIP_ENV = --best
SOURCES = $(gwave_SOURCES)
OBJECTS = $(gwave_OBJECTS)
all: all-redirect
.SUFFIXES:
.SUFFIXES: .S .c .o .s
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps Makefile
......@@ -131,7 +108,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) \
&& CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in acinclude.m4
cd $(srcdir) && $(ACLOCAL)
config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
......@@ -166,54 +143,8 @@ distclean-hdr:
-rm -f config.h
maintainer-clean-hdr:
mostlyclean-binPROGRAMS:
clean-binPROGRAMS:
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
distclean-binPROGRAMS:
maintainer-clean-binPROGRAMS:
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(bindir)
@list='$(bin_PROGRAMS)'; for p in $$list; do \
if test -f $$p; then \
echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
$(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
else :; fi; \
done
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
list='$(bin_PROGRAMS)'; for p in $$list; do \
rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
done
.c.o:
$(COMPILE) -c $<
.s.o:
$(COMPILE) -c $<
.S.o:
$(COMPILE) -c $<
mostlyclean-compile:
-rm -f *.o core *.core
clean-compile:
distclean-compile:
-rm -f *.tab.c
maintainer-clean-compile:
gwave: $(gwave_OBJECTS) $(gwave_DEPENDENCIES)
@rm -f gwave
$(LINK) $(gwave_LDFLAGS) $(gwave_OBJECTS) $(gwave_LDADD) $(LIBS)
gwave.spec: $(top_builddir)/config.status gwave.spec.in
cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
......@@ -345,7 +276,7 @@ distdir: $(DISTFILES)
@for file in $(DISTFILES); do \
d=$(srcdir); \
if test -d $$d/$$file; then \
cp -pr $$/$$file $(distdir)/$$file; \
cp -pr $$d/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
......@@ -363,22 +294,6 @@ distdir: $(DISTFILES)
fi; \
done
$(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook
cmd.o: cmd.c gwave.h spicefile/wavefile.h spicefile/spicestream.h
dnd.o: dnd.c config.h gwave.h spicefile/wavefile.h \
spicefile/spicestream.h gtkmisc.h
draw.o: draw.c gwave.h spicefile/wavefile.h spicefile/spicestream.h
event.o: event.c gwave.h spicefile/wavefile.h spicefile/spicestream.h
gtkmisc.o: gtkmisc.c
gwave.o: gwave.c config.h gwave.h spicefile/wavefile.h \
spicefile/spicestream.h
pixmaps.o: pixmaps.c
print.o: print.c config.h gwave.h spicefile/wavefile.h \
spicefile/spicestream.h
wavelist.o: wavelist.c config.h gwave.h spicefile/wavefile.h \
spicefile/spicestream.h
wavewin.o: wavewin.c config.h gwave.h spicefile/wavefile.h \
spicefile/spicestream.h
info-am:
info: info-recursive
dvi-am:
......@@ -390,7 +305,7 @@ installcheck: installcheck-recursive
all-recursive-am: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
install-exec-am: install-binPROGRAMS
install-exec-am:
install-exec: install-exec-recursive
install-data-am:
......@@ -399,49 +314,39 @@ install-data: install-data-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
install: install-recursive
uninstall-am: uninstall-binPROGRAMS
uninstall-am:
uninstall: uninstall-recursive
all-am: Makefile $(PROGRAMS) config.h
all-am: Makefile config.h
all-redirect: all-recursive-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs: installdirs-recursive
installdirs-am:
$(mkinstalldirs) $(DESTDIR)$(bindir)
mostlyclean-generic:
-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
-rm -f Makefile $(CONFIG_CLEAN_FILES)
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
mostlyclean-am: mostlyclean-hdr mostlyclean-binPROGRAMS \
mostlyclean-compile mostlyclean-tags \
mostlyclean-generic
mostlyclean-am: mostlyclean-hdr mostlyclean-tags mostlyclean-generic
mostlyclean: mostlyclean-recursive
clean-am: clean-hdr clean-binPROGRAMS clean-compile clean-tags \
clean-generic mostlyclean-am
clean-am: clean-hdr clean-tags clean-generic mostlyclean-am
clean: clean-recursive
distclean-am: distclean-hdr distclean-binPROGRAMS distclean-compile \
distclean-tags distclean-generic clean-am
distclean-am: distclean-hdr distclean-tags distclean-generic clean-am
distclean: distclean-recursive
-rm -f config.status
maintainer-clean-am: maintainer-clean-hdr maintainer-clean-binPROGRAMS \
maintainer-clean-compile maintainer-clean-tags \
maintainer-clean-am: maintainer-clean-hdr maintainer-clean-tags \
maintainer-clean-generic distclean-am
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
......@@ -450,11 +355,7 @@ maintainer-clean: maintainer-clean-recursive
-rm -f config.status
.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \
mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \
maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \
mostlyclean-compile distclean-compile clean-compile \
maintainer-clean-compile install-data-recursive \
uninstall-data-recursive install-exec-recursive \
install-data-recursive uninstall-data-recursive install-exec-recursive \
uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \
all-recursive check-recursive installcheck-recursive info-recursive \
dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \
......@@ -470,12 +371,10 @@ maintainer-clean-generic clean mostlyclean distclean maintainer-clean
# distribute some extra directories that don't have anything to build
# or install in them
dist-hook:
mkdir $(distdir)/doc
cp -p doc/* $(distdir)/doc
mkdir $(distdir)/examples
cp -p examples/* $(distdir)/examples
mkdir $(distdir)/iconwork
cp -p iconwork/* $(distdir)/iconwork
rsync -C -p examples/* $(distdir)/examples
mkdir $(distdir)/icons
rsync -C -p icons/* $(distdir)/icons
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
......
Gwave NEWS --- history of user-visible changes. -*- text -*-
New in 20011020:
- better measurement: value at both cursors or difference in values at cursors
- enhanced handling of log scales
- yet more file-reading improvements and general bug fixes
New in 20001123:
- Saving wave and panel configuration as guile scripts.
- Executing guile scripts from menu or command line (-s <script> option)
- Remote control using the gwave-exec and gwaverepl utilities
New in 20001004:
- Spice3/Ngspice rawfile improvements: binary files now work!
- Other minor file-reading improvements.
- spice source code to examples for which I could still find it.
New in 20001004:
- Major improvements to handling of binary files produced by HSPICE.
- Overhaul of input of spice3/ngspice raw files; more robust and tolerant
of complex numbers.
- User interface improvements: tooltips added. User's .gwaverc no longer
required to do lots of standard setup. system.gwaverc can be copied
to $HOME/.gwaverc and edited to taste.
- sp2sp utility included for converting any spice file readable by gwave into
a convenient tabular ascii format.
New in 20000518:
- Logarithmic scales working on both X and Y axis.
New in 20000509:
- First public guile/guile-gtk release.
- Popup menu on visible-wave button can activate per-waveform dialog box
- Logarithmic scale on Y axis working; on X axis it isn't quite there yet.
New in 20000108:
- Merged in guile and guile-gtk; the GUI is mostly written in guile now.
- Some additional improvements to reading of HSPICE input. Reading partial
files from simulations still in progress works for ascii .tr0 files.
New in 1990716:
Improved handling of HSPICE ascii format in libspicefile - tested on files
from 98.4 on HP-UX and Solaris.
......
This diff is collapsed.
ability to get wave data from guile
(wavevar-value x) - return value at x-coord.
survey existing guile primitives and add new ones to fill out a useful set
for scripting in general, not just what the GUI offers at the moment.
custom measurements
Y zoom methods:
manual: type in min and max for panel
automatic-global: what we do now
automatic-window: alway show min, max in current window zoom extents
oneshot-global: compute min,max when clicked, not continually.
oneshot-window:
plotting quick-fix
make log-scale work in plots
overhaul plotting
move mostly into scheme
keep "wave data export" function in C
dialog box for options
documentation
docstring extraction from guile
get reference-manual auto-generation working
write some introductory text to hold the auto-generated parts together
example guile scripts for useful functions
draw a real graticule in wave panels
move to top, move to bottom to select drawing order for visiblewaves in panel
"envelope" drawing algorithm (that doesn't alias when too many
datapoints for current zoom)
Add an indication that there may be too many points on screen (simply
look at number of ivar points vs. number of pixels)
additional drawing styles
linestyles - dashed, etc.
symbols showing actual datapoints
......@@ -17,6 +17,9 @@
/* do we have Gtk+? */
#undef HAVE_GTK
/* do we have sys/types.h? */
#undef HAVE_SYS_TYPES_H
/* does the Gtk+ we found have the new drag-and-drop stuff?
* do we need to use gtk_scrolled_window_add_with_viewport()?
*/
......@@ -26,3 +29,85 @@
*/
#undef PROG_GRAPH
/* Define this if your libguile has a scm_eval_string that is safe against
re-entry by continuations. This should be true of snapshots newer than
970928. */
#undef HAVE_SAFE_SCM_EVAL_STRING
/* Define this if your libguile exports scm_puts, meaning that
scm_gen_puts should no longer be used. This should be true of
snapshots newer than 971014. */
#undef HAVE_SCM_PUTS
/* Define this if your libguile has gh_vector_ref instead of gh_vref,
meaning that gh_vref should no longer be used. This should be
true of snapshots newer than 971012. */
#undef HAVE_GH_VECTOR_REF
/* Define this if your libguile has gh_vector_set_x instead of gh_vset,
meaning that gh_vset should no longer be used. This should be
true of snapshots newer than 971020. */
#undef HAVE_GH_VECTOR_SET_X
/* Define this if your libguile has readline support. This should be
true of snapshots newer than 971023. */
#undef HAVE_SCM_READLINE
/* Define this if your libguile has gh_length and not
gh_list_length. This should be true of snapshots newer than 970915. */
#undef HAVE_GH_LENGTH
/* Define this if your libguile has scm_parse_path. */
#undef HAVE_SCM_PARSE_PATH
/* Define this if your libguile has scm_internal_select. */
#undef HAVE_SCM_INTERNAL_SELECT
/* Define this if your libguile has scm_the_last_stack_fluid instead
of scm_the_last_stack_var. */
#undef HAVE_SCM_THE_LAST_STACK_FLUID
/* Define this if your libguile has scm_internal_cwdr. */
#undef HAVE_SCM_INTERNAL_CWDR
/* Define this if your libguile has scm_internal_stack_catch. */
#undef HAVE_SCM_INTERNAL_STACK_CATCH
/* Define this if your libguile has scm_internal_parse_path,
which should be used instead of scm_parse_path from C. */
#undef HAVE_SCM_INTERNAL_PARSE_PATH
/* Define this if your libguile has a scm_make_vector, which needs
three arguments. This should be true only of older versions. */
#undef HAVE_SCM_MAKE_VECTOR_3_ARGS
/* Define this if your libguile has scm_load_startup_files,
which means the hack to get boot-9.scm to be loaded is unnecessary
and even dangerous. */
#undef HAVE_SCM_LOAD_STARTUP_FILES
/* Define this if your libguile has scm_make_hook, indicating
C-level support for hooks. */
#undef HAVE_SCM_MAKE_HOOK
/* Define this if your libguile has scm_create_hook, which replaces
the deprecated scm_make_named_hook. */
#undef HAVE_SCM_CREATE_HOOK
/* Define this if your libguile has the scm_hook_empty_p primitive */
#undef HAVE_SCM_HOOK_EMPTY_P
/* Define this if your libguile has scm_make_smob_type_mfpe,
the new-style SMOB interface (>= guile-1.3.2 */
#undef HAVE_SCM_MAKE_SMOB_TYPE_MFPE
/* Define this if your libguile has scm_strport_to_string
(added sometime after guile-1.3) */
#undef HAVE_SCM_STRPORT_TO_STRING
/* Define this if you have the readline library */
#undef HAVE_READLINE
/* Define this if your readline also has add_history() */
#undef HAVE_HISTORY
dnl AC_PROG_GREPSTDOUT(var-to-set, program-to-find, string to grep for,
dnl value-if-found, value-if-unfound)
dnl try all programs in $PATH named program-to-find, grepping their
dnl stdout for the indicated string. First one to pass wins.
dnl
AC_DEFUN(AC_PROG_GREPSTDOUT,
[# Extract the first word of "$2", so it can be a program name with args.
set dummy $2; ac_word=[$]2
AC_MSG_CHECKING([for suitable $ac_word])
AC_CACHE_VAL(ac_cv_prog_$1,
[if test -n "[$]$1"; then
ac_cv_prog_$1="[$]$1" # Let the user override the test.
else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
dnl $ac_dummy forces splitting on constant user-supplied paths.
dnl POSIX.2 word splitting is done only on the output of word expansions,
dnl not every word. This closes a longstanding sh security hole.
ac_dummy="$PATH"
for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
if ($ac_dir/$2 | grep $3 >/dev/null) ; then
ac_cv_prog_$1="$4"
else
ac_bogus=$ac_dir/$ac_word
ac_prog_rejected=yes
continue
fi
break
fi
done
IFS="$ac_save_ifs"
if test $ac_prog_rejected = yes; then
# We found a bogon in the path, so make sure we never use it.
set dummy [$]ac_cv_prog_$1
shift
if test [$]# -gt 0; then
# We chose a different compiler from the bogus one.
# However, it has the same basename, so the bogon will be chosen
# first if we set $1 to just the basename; use the full file name.
shift
set dummy "$ac_dir/$ac_word" "[$]@"
shift
ac_cv_prog_$1="[$]@"
ifelse([$2], [$5], dnl
[ else
# Default is a loser.
AC_MSG_ERROR([$1=$ac_bogus unacceptable, but no other $5 found in [\$]PATH])
])dnl
fi
fi
dnl If no 5th arg is given, leave the cache variable unset,
dnl so AC_PROG_GREPSTDOUT will keep looking.
ifelse([$5], , , [ test -z "[$]ac_cv_prog_$1" && ac_cv_prog_$1="$5"
])dnl
fi])dnl
$1="$ac_cv_prog_$1"
if test -n "[$]$1"; then
AC_MSG_RESULT([$]$1)
else
AC_MSG_RESULT(no)
fi
AC_SUBST($1)dnl
])
......@@ -10,6 +10,74 @@ dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
dnl PARTICULAR PURPOSE.
dnl AC_PROG_GREPSTDOUT(var-to-set, program-to-find, string to grep for,
dnl value-if-found, value-if-unfound)
dnl try all programs in $PATH named program-to-find, grepping their
dnl stdout for the indicated string. First one to pass wins.
dnl
AC_DEFUN(AC_PROG_GREPSTDOUT,
[# Extract the first word of "$2", so it can be a program name with args.
set dummy $2; ac_word=[$]2
AC_MSG_CHECKING([for suitable $ac_word])
AC_CACHE_VAL(ac_cv_prog_$1,
[if test -n "[$]$1"; then
ac_cv_prog_$1="[$]$1" # Let the user override the test.