Imported Upstream version 20031224

parent 758fd847
......@@ -18,6 +18,6 @@
configure now rejects non-GNU versions of "graph" even if they're
earlier in $PATH
20011020
20011021
Clean abort with better error message if we can't find the scheme
files or they're fouled up
......@@ -4,72 +4,69 @@ 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)
Guile-Gtk (http://www.nongnu.org/guile-gtk/)
GNU Plotutils-2.4.1 or later with patches
(optional, only used for ploting/exporting)
GNUPlot (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
-------------
tested configurations:
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
Red Hat Linux 9 is my primary development platform. I use these rpms:
gtk+-1.2.10-25 (Standard With RH9)
gtk+-devel-1.2.10-25 (Standard With RH9)
glib-1.2.10-10 (Standard With RH9)
glib-devel-1.2.10-10 (Standard With RH9)
guile-1.6.4-7.1 (ftp://ftp.redhat.com/pub/redhat/linux/rawhide/i386)
guile-gtk-1.2_0.31-1sgt (http://www.telltronics.org/pub/guile/guile-gtk-0.19-1.i386-redhat9.rpm)
An ancient version of guile shipped with RedHat 6.2.
It is unusable with gwave.
Red Hat 8.0 has been tested with:
gtk+, gtk+-devel, glib, glib-devel (Standard with RH8)
guile-1.4-8, guile-devel-1.4-8 (Standard with RH8)
guile-gtk-0.19-1 (http://www.telltronics.org/pub/guile/guile-gtk-0.19-1.i386-redhat80.rpm)
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
Red Hat 7 should work but has not yet been tested with this release.
On RedHat 7.1, you can also use the guile-1.3.4 that comes standard.
In that case, use guile-gtk 0.18
Sun Solaris 2.8 should work but has not yet been tested with this release.
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:
CAUTION: Use only the version of guile-gtk known to work with whatever
version of guile you have. Here are combinations known to work:
guile guile-gtk
1.6.x 1.2_0.31
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.
Mixing incompatibile versions of guile-gtk and guile definitely fails.
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.
Gwave does not support versions of guile older than 1.3.4.
Gwave does not yet support Gtk+ version 2.0 because guile-gtk support
for the newer Gtk+ is still in early development.
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.
** Please try this before reporting guile-gtk related problems with gwave. **
Gwave requires external programs in order to export postscript and
bitmap files for hardcopy or documentation use. Wither Gnu Graph
(from Gnu plotutils) or GnuPlot can be used.
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:
GNU graph is part of 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.
GNU plotutils 2.4.1 contains bugs that cause it to generate bad
postscript output and make it prone to crashing on plots with more
than 1024 points.
Applying "plotutils-2.4.1.patch" included in the gwave distribution
and recompiling graph fixes these problems.
......@@ -95,7 +92,6 @@ GWAVE_GUILE_DIR=/home/tell/build/gwave-20000301/src
Basic Installation
==================
......
......@@ -3,7 +3,7 @@
SUBDIRS=spicefile utilities src scheme doc remote
EXTRA_DIST=autogen.sh gwave.spec TODO
EXTRA_DIST=autogen.sh gwave.spec TODO plotutils-2.4.1.patch
# distribute some extra directories that don't have anything to build
# or install in them
......@@ -12,3 +12,8 @@ dist-hook:
rsync -C -p examples/* $(distdir)/examples
mkdir $(distdir)/icons
rsync -C -p icons/* $(distdir)/icons
# build RPMs - but only on a redhat system
rpm: $(distdir).tar.gz
cp gwave.spec $(distdir).tar.gz /usr/src/redhat/SOURCES
cd /usr/src/redhat/SOURCES; rpmbuild -ba gwave.spec
This diff is collapsed.
Gwave NEWS --- history of user-visible changes. -*- text -*-
New in 20011020:
New in 20031202
- Got docstring extraction from C source to .txt files in doc directory working again
- applied submitted patch that cleans up warnings from gcc3 about multiline text strings in C code
New in 20030917
- bugfixes to make the new print/plot stuff work better
- path to working gnu graph found by configure is passed to scheme code
New in 20030804
- major new work on print/plot output, gnugraph and gnuplot backends
- simple data-export function
New in 20021113
- tiniest bugfix to accconfig.h: left some CVS-conflict junk behind
- missing files src/xsnarf.h, src/xguile-snarf added
- Now a useful snapshot, while 20020419 didn't quite work.
New in 20020419:
- minor bugfixes
- better handling of really huge hspice files
New in 20020122:
- fix RPM building and other minor build issues
New in 20020114:
- restore ability to compile with guile-1.3.4
New in 20020109:
- interactive Y-zoom and XY-area zoom added (see Readme)
- zoom-to-exact-size dialog box added
New in 20011021:
- 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
......
......@@ -5,7 +5,7 @@ sorts of of analog data.
by:
Steve Tell
tell@cs.unc.edu or steve@telltronics.org
steve@telltronics.org
Installation:
See the INSTALL file
......@@ -34,9 +34,9 @@ VisibleWave:
- Press and hold the right mousebutton to pop up a menu of operations
related to that particular VisibleWave.
To delete waves, select one or more of them and then press the
"delete" button at the top of the main window. Alternately, use the
delete item on the VisibleWave-button popup menu.
To remove waves from the display , select one or more of them and then
press the "delete" button at the top of the main window. Alternately, use
the delete item on the VisibleWave-button popup menu.
Click on the waveform panels with the left and center mouse buttons to
set two cursors for measuring. Hold down these mouse buttons to drag
......@@ -45,8 +45,49 @@ the cursors.
Pressing and holding the right mouse button while the cursor is in a
waveform panel brings up a popup menu. From this menu you can insert
and delete waveform panels. Some of the zoom commands are also
replicated on this menu.
replicated on this menu.
Zooming of the Y axis to magnify a signal verticaly is only available
on the wavepanel popup-menu because it affects each wavepanel
seperately. By default, each wavepanel automaticly scales to enclose
the minimum and maximum values of the signals displayed in it. Adding
or removing signals may change the y-axis extents. After a Y-zoom or
XY-zoom operation, the Y axis for that particular wavepanel changes to
"manual" mode and remains fixed. To restore the panel to full-size
with automatic Y zooming, select the "Zoom Y Full + Auto" menu option.
Exporting data.
A selected subset of the data from a waveform file may be exported in
a tabular ascii format for postprocessing by external programs.
Select "Export Data..." from the File menu of the waveform variable
list window.
In the current version of gwave, data from multiple files cannot be
combined and exported to a single file.
Plotting.
A view of the displayed waveforms can be plotted to postscript,
bitmap, and other formats for printing and documenataion.
All plot rendering is handled by external programs; currently gnu graph
and gnuplot are supported.
Choose the "Plot..." item from the main window or from any wavepanel's
popup menu.
Only a subset of the features of the external plot-rendering tools are
directly available from the plot dialog box. To make more advanced
use of these tools, select "Keep Tempfiles" in the plot dialog box.
This will preserve all of the temporary files and scripts used to
drive the external plot-rendering tool. These files will have names
generated from the name of the plot output by appending suffixes. Consult
the documentation for each plot-rendering tool for information on additional
options that can be used in the script files.
Additional plot-rendering tools can be supported by writing an
appropriate scheme module; see export-gnugraph.scm and export-gnuplot.scm
for examples.
Configuration save/restore
......@@ -77,12 +118,14 @@ conditions.
In addition to the configuration-script-writing facilities described
here, you are welcome to create your own guile scripts for specialized
gwave applications. For general guile information, see
http://www.gnu.org/software/guile/guile.html For information on
gwave-specfic features available for scripting gwave using guile, see
the text files gwave-concepts.txt, gwave-hooks.txt,
gwave-procedures.txt, and gwave-variables.txt All of gwave's menus and
many of its user-interface features are written in guile; the code in
the scheme subdirectory may also be useful as an example.
http://www.gnu.org/software/guile/guile.html
For information on gwave-specfic features available for scripting
gwave using guile, see the text files gwave-concepts.txt,
gwave-hooks.txt, gwave-procedures.txt, and gwave-variables.txt All of
gwave's menus and many of its user-interface features are written in
guile; the code in the scheme subdirectory may also be useful as an
example.
Remote Control
......@@ -115,7 +158,6 @@ Bug: do not use gwave-exec or gwaverepl when running multiple
instances of gwave at a time on the same X server.
Waveform Input files.
Gwave understands CAzM transient output (.N/.B/.W) files, the binary
......@@ -137,8 +179,9 @@ gwave running on a little-endian machine. Your mileage may vary (but
please send bug reports!)
ACS (Al's Circuit Simulator, http://www.geda.seul.org/tools/acs/index.html)
Gwave should identify and read ACS output files, generated with the '>'
option to a .tran statement.
and its newer, renamed decendant GnuCAP (http://www.gnu.org/software/gnucap):
Gwave should identify and read ACS/GnuCAP output files, generated with
the '>' option to a .tran statement.
Avanti's HSPICE.
Gwave should work with both ascii and binary output in the form of
......@@ -158,6 +201,9 @@ Silvaco SmartSpice
Gwave works with the variant of berkeley spice rawfile format produced by
SmartSpice. Both ascii and binary files should work.
Apache Design Automation NSPICE
Nspice produces yet another variant of the berkeley spice3 rawfile format.
Both ascii and binary files should work.
Your own custom waveforms:
......@@ -217,8 +263,6 @@ This tool is far from complete. Partial contents of the To Do list:
of waveform name/value labels when moving cursors.
- Generate a postscript representation for printing or documentation.
(partly done)
- Override of wave and panel paramters, like min/max Y value, color, etc.
Many of these are done.... needs docs...
- More guile methods to round out the interface, including:
access to selected-VisibleWave list, others.
- Drawing a labeled graticule in the waveform area
......
ability to get wave data from guile
(wavevar-value x) - return value at x-coord.
what else? how to expose the structure of wavevars?
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.
replace wtable-redraw! with (wavepanel-redraw! p), allow #t for all
replace delete-selected-waves! with delete-viswave and
get-selected
write more plot backend scheme modules
custom measurements
waveform calculations
- display-functions of a single wavevar and scalars
- display-functions of wavevars sharing the same independent var
- more general stuff that computes a new wavevar
Y zoom methods:
manual: type in min and max for panel
automatic-global: what we do now
manual: type in min and max for panel DONE
automatic-global: (original)
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
oneshot-window
documentation
docstring extraction from guile
......@@ -31,8 +34,6 @@ 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
......@@ -42,8 +43,25 @@ additional drawing styles
linestyles - dashed, etc.
symbols showing actual datapoints
prevent switching to log-scale if the axis includes 0 or negative values.
Accept drag-and-drop from a file manager to add files, run scripts
Allow drag-and-drop from one wavepanel to another to move wave
Improve notion of a current wavepanel
draw highlighted outline
procedure (current-wavepanel) to retrieve it
-----------------------------------------------------------------------------
tasks list items finished:
way to highlight selected visiblewaves DONE based on patch from Serban Popescu
overhaul plotting DONE
move mostly into scheme
keep "wave data export" function in C, make availble in guile
dialog box for options
move to top, move to bottom to alter drawing order for visiblewaves in panel
DONE
......@@ -111,3 +111,14 @@
/* Define this if your readline also has add_history() */
#undef HAVE_HISTORY
/* Define this libguile/snarf.h SCM_SNARF_DOC takes one argument */
#undef HAVE_1ARG_SCMSNARFDOC
/* define this scm_eval_x takes a second argument specifying the module */
#undef HAVE_SCM_EVAL_X_MODULE
/* define this if libguile has scm_the_last_stack_fluid_var */
#undef HAVE_SCM_THE_LAST_STACK_FLUID_VAR
/* define this if libguile has scm_c_read_string */
#undef HAVE_SCM_C_READ_STRING
This diff is collapsed.
/* config.h.in. Generated automatically from configure.in by autoheader. */
/* config.h.in. Generated from configure.in by autoheader. */
/* acconfig.h --- documentation for local preprocessor symbols defined
* by configure.
* Use autoheader to process acconfig.h along with configure.in to generate
* config.h.in
* Steve Tell <tell@cs.unc.edu>
*/
/* Define to empty if the keyword does not work. */
#undef const
/* Name of package. */
#undef PACKAGE
/* Version of package. */
#undef VERSION
/* do we have posix regex routines? */
#undef HAVE_POSIX_REGEXP
/* 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()?
......@@ -60,6 +78,10 @@
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. */
......@@ -90,18 +112,74 @@
/* Define this if your readline also has add_history() */
#undef HAVE_HISTORY
/* Define if you have the <sys/types.h> header file. */
/* Define this libguile/snarf.h SCM_SNARF_DOC takes one argument */
#undef HAVE_1ARG_SCMSNARFDOC
/* define this scm_eval_x takes a second argument specifying the module */
#undef HAVE_SCM_EVAL_X_MODULE
/* define this if libguile has scm_the_last_stack_fluid_var */
#undef HAVE_SCM_THE_LAST_STACK_FLUID_VAR
/* define this if libguile has scm_c_read_string */
#undef HAVE_SCM_C_READ_STRING
/* defined if we have GTK */
#undef HAVE_GTK
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* defined if we have POSIX regular expression routines */
#undef HAVE_POSIX_REGEXP
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Name of package */
#undef PACKAGE
/* Version number of package */
#undef VERSION
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* defined if we have POSIX regular expression routines */
#undef HAVE_POSIX_REGEXP
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* defined if we have GTK */
#undef HAVE_GTK
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Version number of package */
#undef VERSION
/* Define to empty if `const' does not conform to ANSI C. */
#undef const
This diff is collapsed.
......@@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script.
dnl ## Initialize autoconf ##
AC_INIT(src/gwave.c)
AM_INIT_AUTOMAKE(gwave, 20011021)
AM_INIT_AUTOMAKE(gwave, 20031224)
AM_MAINTAINER_MODE
AM_CONFIG_HEADER(config.h)
......@@ -17,9 +17,10 @@ AC_PROG_LN_S
AC_PATH_PROGS(PERL, perl perl5, no)
AC_SUBST(PERL)
# TODO: make this find GNU graph only, not tradional berkeley/sysv graph
# this will fail on linux where /usr/bin/graph is GNU graph.
AC_ARG_WITH(graph, full pathname to GNU graph for postscript plotting)
# this tries to find GNU graph only, not traditional berkeley/sysv graph,
# so we do the right thing on solaris, where an unusable one is in /usr/bin
# and the graph we want is usually in /usr/local/bin or some such.
AC_ARG_WITH(graph, [full pathname to GNU graph for postscript plotting])
dnl AC_MSG_RESULT(with_graph is $with_graph)
if test "$with_graph" != no; then
if test "$with_graph" != yes && test ! -z "$with_graph" ; then
......@@ -41,9 +42,9 @@ dnl Checks for library functions.
AC_FUNC_MEMCMP
dnl check for posix regular expression routines
AC_CHECK_HEADER(regex.h, AC_CHECK_FUNC(regcomp, AC_DEFINE(HAVE_POSIX_REGEXP,1,defined if we have POSIX regular expression routines)))
AC_CHECK_HEADER([regex.h], [AC_CHECK_FUNC([regcomp], [AC_DEFINE(HAVE_POSIX_REGEXP,1,[defined if we have POSIX regular expression routines])])])
AC_CHECK_HEADERS(sys/types.h)
AC_CHECK_HEADERS([sys/types.h])
dnl check for GTK+
AM_PATH_GTK(1.0.1, AC_DEFINE(HAVE_GTK,1,defined if we have GTK), AC_MSG_ERROR(Can not find GTK+ 1.0.1 or later on this system))
......@@ -89,9 +90,7 @@ dnl I was to lazy to write a real test macro so I just check for a function
dnl that was added soon after.
AC_CHECK_LIB(guile, scm_done_malloc, AC_DEFINE(HAVE_SAFE_SCM_EVAL_STRING), ,$GUILE_LDFLAGS)
dnl This checks if the new printer functions are available, and should
dnl be used instead of the old ones.
AC_CHECK_LIB(guile, scm_puts, AC_DEFINE(HAVE_SCM_PUTS), ,$GUILE_LDFLAGS)
AC_CHECK_LIB(guile, scm_c_read_string, AC_DEFINE(HAVE_SCM_C_READ_STRING),,$GUILE_LDFLAGS)
dnl This checks if we have gh_vref or gh_vector_ref
AC_CHECK_LIB(guile, gh_vector_ref, AC_DEFINE(HAVE_GH_VECTOR_REF), ,$GUILE_LDFLAGS)
......@@ -102,11 +101,6 @@ AC_CHECK_LIB(guile, gh_vector_set_x, AC_DEFINE(HAVE_GH_VECTOR_SET_X), ,$GUILE_LD
dnl This checks if we have a guile with readline support
AC_CHECK_LIB(guile, scm_readline, AC_DEFINE(HAVE_SCM_READLINE), ,$GUILE_LDFLAGS)
dnl This checks if we have a guile with gh_length, not gh_list_length
AC_CHECK_LIB(guile, gh_length, AC_DEFINE(HAVE_GH_LENGTH), ,$GUILE_LDFLAGS)
AC_CHECK_LIB(guile, scm_parse_path, AC_DEFINE(HAVE_SCM_PARSE_PATH), ,$GUILE_LDFLAGS)
AC_CHECK_LIB(guile, scm_internal_select, AC_DEFINE(HAVE_SCM_INTERNAL_SELECT), ,$GUILE_LDFLAGS)
AC_CHECK_LIB(guile, scm_internal_cwdr, AC_DEFINE(HAVE_SCM_INTERNAL_CWDR),,$GUILE_LDFLAGS)
......@@ -115,13 +109,11 @@ AC_CHECK_LIB(guile, scm_internal_stack_catch, AC_DEFINE(HAVE_SCM_INTERNAL_STACK_
AC_CHECK_LIB(guile, scm_internal_parse_path, AC_DEFINE(HAVE_SCM_INTERNAL_PARSE_PATH), ,$GUILE_LDFLAGS)
AC_CHECK_LIB(guile, scm_load_startup_files, AC_DEFINE(HAVE_SCM_LOAD_STARTUP_FILES), ancient_guile=yes,$GUILE_LDFLAGS)
AC_CHECK_LIB(guile, scm_make_hook, AC_DEFINE(HAVE_SCM_MAKE_HOOK), ,$GUILE_LDFLAGS)
AC_CHECK_LIB(guile, scm_make_hook, AC_DEFINE(HAVE_SCM_MAKE_HOOK), ancient_guile=yes,$GUILE_LDFLAGS)
AC_CHECK_LIB(guile, scm_create_hook, AC_DEFINE(HAVE_SCM_CREATE_HOOK), ,$GUILE_LDFLAGS)
AC_CHECK_LIB(guile, scm_create_hook, AC_DEFINE(HAVE_SCM_CREATE_HOOK), ancient_guile=yes,$GUILE_LDFLAGS)
AC_CHECK_LIB(guile, scm_hook_empty_p, AC_DEFINE(HAVE_SCM_HOOK_EMPTY_P), ,$GUILE_LDFLAGS)
AC_CHECK_LIB(guile, scm_load_startup_files, AC_DEFINE(HAVE_SCM_LOAD_STARTUP_FILES), ancient_guile=yes,$GUILE_LDFLAGS)
AC_CHECK_LIB(guile, scm_make_smob_type_mfpe, AC_DEFINE(HAVE_SCM_MAKE_SMOB_TYPE_MFPE), ancient_guile=yes, $GUILE_LDFLAGS)
......@@ -137,6 +129,7 @@ saved_LIBS="${LIBS}"
LIBS="${LIBS} ${GUILE_LDFLAGS}"
saved_CFLAGS="${CFLAGS}"
CFLAGS="${CFLAGS} ${GUILE_CFLAGS}"
AC_MSG_CHECKING(for scm_the_last_stack_fluid in -lguile)
AC_TRY_LINK([
#include <guile/gh.h>
......@@ -149,6 +142,46 @@ AC_MSG_RESULT(yes)
AC_MSG_RESULT(no)
])
AC_MSG_CHECKING(for scm_the_last_stack_fluid_var in -lguile)
AC_TRY_LINK([
#include <guile/gh.h>
],[
return scm_the_last_stack_fluid_var;
], [
AC_DEFINE(HAVE_SCM_THE_LAST_STACK_FLUID_VAR)
AC_MSG_RESULT(yes)
],[
AC_MSG_RESULT(no)
])
# 1-argument SCM_SNARF_DOC macro (guile 1.3.4, 1.4) or many-arg (1.5.4 and later)
AC_MSG_CHECKING(for 1-argument form of SCM_SNARF_DOC in libguile)
AC_TRY_COMPILE([
#include <guile/gh.h>
#include <libguile/snarf.h>
],[
SCM_SNARF_DOCS("foo")
],[
AC_DEFINE(HAVE_1ARG_SCMSNARFDOC)
AC_MSG_RESULT(yes)
],[
AC_MSG_RESULT(no)
])
# 1-argument scm_eval_x or 2-argument form
AC_MSG_CHECKING(if scm_eval_x() takes a second module argument)
AC_TRY_COMPILE([
#include <libguile.h>
],[
SCM foo,bar;
scm_eval_x(foo,bar);
],[
AC_DEFINE(HAVE_SCM_EVAL_X_MODULE)
AC_MSG_RESULT(yes)
],[
AC_MSG_RESULT(no)
])
LIBS="${saved_LIBS}"
CFLAGS="${saved_CFLAGS}"
......@@ -204,15 +237,16 @@ AC_SUBST(ggtk_extra_loadpath)
dnl doesn't work if prefix isn't specified.
dnl AC_DEFINE_UNQUOTED(DATADIR,"${datadir}",Installation prefix for finding necessary guile code)
AC_OUTPUT(Makefile
AC_OUTPUT(Makefile \
src/Makefile spicefile/Makefile scheme/Makefile \
src/app/Makefile \
doc/Makefile \
remote/Makefile \
utilities/Makefile \
utilities/doc-split \
utilities/guile-doc-snarf utilities/guile-func-name-check
utilities/guile-snarf.awk
gwave.spec )
utilities/guile-func-name-check \
utilities/gwave-doc-snarf \
gwave.spec \
scheme/gwave-config.scm)
This diff is collapsed.
## $Id: Makefile.am,v 1.6 2001/08/22 23:38:32 sgt Exp $
## $Id: Makefile.am,v 1.9 2003/12/24 20:42:48 sgt Exp $
## process this file with automake to create Makefile.in
## (You should run ./autogen.sh from the top level directory)
......@@ -14,11 +14,11 @@ noinst_DATA=gwave-procedures.txt gwave-variables.txt gwave-hooks.txt \
man_MANS=sp2sp.1
EXTRA_DIST=Guile.notes HPUX.notes hspice.txt hspice-output.txt sp2sp.sgml sp2sp.1
EXTRA_DIST=Guile.notes HPUX.notes hspice.txt hspice-output.txt sp2sp.sgml sp2sp.1 spice3.txt scwmexec.proto
# Make the reference-document textfiles
gwave-procedures.txt gwave-variables.txt gwave-hooks.txt gwave-concepts.txt:
$(top_srcdir)/utilities/doc-split --basename gwave $(top_srcdir)/src/*.doc
@GUILE@ -e main -s $(top_srcdir)/utilities/doc-split --basename gwave $(top_srcdir)/src/*.doc $(top_srcdir)/scheme/*.doc
html: gwave.sgml
mkdir -p html && cd html && \
......
This diff is collapsed.
A brief description of the scwmexec protocol
* The scwmexec protocol on a particular X screen involves one server
and one or more clients. The following steps are involved in
negotiating the protocol:
0) On startup, the server advertises availability of the scwmexec
protocol on a given screen by setting the "SCWMEXEC_LISTENER" property
on the root window. It then waits for clients to initiate transactions
by setting the SCWMEXEC_REQWIN property on the root window.
1) Clients use a dedicated window for the transaction. An ordinary app
window may be used, however, the library code creates a separate
window for simplicities sake. The client first sets the
SCWMEXEC_REQUEST property on the window with the command language
expression it would like to have evaluated.
2) Then it sets the SCWMEXEC_REQWIN propert on the root window to the
32 bit window ID of the window that has the request, and listens for
property changes
3) The server, upon being notified of the SCWMEXEC_REQWIN change,
determines the window that is making the request and deletes the
SCWMEXEC_REQWIN property.
4) The server reads the SCWMEXEC_REQUEST property on the request
window, deleting it in the process.
5) The server evaluates this expression and sets the SCWMEXEC_REPLY
property on the client window to a string representation of the
result.
6) The client, upon notification of the SCWMEXEC_REPLY change, reads
the reply, delting it in the process.
Note that a given client is only allowed to have one active request at
a time to avoid races.
Possible extensions: