URL
https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk
Subversion Repositories openrisc_me
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc/trunk/rtos/ecos-2.0/packages/devs/watchdog/synth/v2_0
- from Rev 27 to Rev 174
- ↔ Reverse comparison
Rev 27 → Rev 174
/cdl/synth_watchdog.cdl
0,0 → 1,110
# ==================================================================== |
# |
# synth_watchdog.cdl |
# |
# Synthetic target watchdog package. |
# |
# ==================================================================== |
#####ECOSGPLCOPYRIGHTBEGIN#### |
## ------------------------------------------- |
## This file is part of eCos, the Embedded Configurable Operating System. |
## Copyright (C) 2002 Bart Veer |
## |
## eCos is free software; you can redistribute it and/or modify it under |
## the terms of the GNU General Public License as published by the Free |
## Software Foundation; either version 2 or (at your option) any later version. |
## |
## eCos 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 General Public License |
## for more details. |
## |
## You should have received a copy of the GNU General Public License along |
## with eCos; if not, write to the Free Software Foundation, Inc., |
## 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
## |
## As a special exception, if other files instantiate templates or use macros |
## or inline functions from this file, or you compile this file and link it |
## with other works to produce a work based on this file, this file does not |
## by itself cause the resulting work to be covered by the GNU General Public |
## License. However the source code for this file must still be made available |
## in accordance with section (3) of the GNU General Public License. |
## |
## This exception does not invalidate any other reasons why a work based on |
## this file might be covered by the GNU General Public License. |
## |
## Alternative licenses for eCos may be arranged by contacting the |
## copyright holder(s). |
## ------------------------------------------- |
#####ECOSGPLCOPYRIGHTEND#### |
# ==================================================================== |
######DESCRIPTIONBEGIN#### |
# |
# Author(s): bartv |
# Original data: bartv |
# Contributors: |
# Date: 2002-08-07 |
# |
#####DESCRIPTIONEND#### |
# ==================================================================== |
|
cdl_package CYGPKG_DEVS_WATCHDOG_SYNTH { |
display "Synthetic target watchdog support" |
description " |
The watchdog driver for the eCos synthetic target provides |
emulation of a watchdog device: if the eCos application starts |
the watchdog and fails to reset it regularly then the host-side |
support will detect this and kill the eCos application with a |
SIGPWR signal." |
doc ref/devs-watchdog-synth.html |
|
parent CYGPKG_IO_WATCHDOG |
active_if CYGPKG_IO_WATCHDOG |
implements CYGINT_WATCHDOG_HW_IMPLEMENTATIONS |
implements CYGINT_WATCHDOG_RESETS_ON_TIMEOUT |
|
cdl_option CYGIMP_WATCHDOG_HARDWARE { |
parent CYGPKG_IO_WATCHDOG_IMPLEMENTATION |
display "use \"hardware\" watchdog" |
default_value 1 |
implements CYGINT_WATCHDOG_IMPLEMENTATIONS |
compile synth_watchdog.cxx |
description " |
eCos provides several implementations of a watchdog device. |
The default is to use the \"hardware\" implementation, which |
for the synthetic target involves interacting with a |
watchdog.tcl script running inside the I/O auxiliary." |
} |
|
cdl_component CYGPKG_DEVS_WATCHDOG_SYNTH_OPTIONS { |
display "Build options" |
active_if CYGIMP_WATCHDOG_HARDWARE |
flavor none |
|
description " |
Package-specific build options including control over compiler |
flags used only in building this package." |
|
cdl_option CYGPKG_DEVS_WATCHDOG_SYNTH_CFLAGS_ADD { |
display "Additional compiler flags" |
flavor data |
no_define |
default_value { "" } |
description " |
This option modifies the set of compiler flags for |
building this package. These flags are used in addition |
to the set of global flags." |
} |
cdl_option CYGPKG_DEVS_WATCHDOG_SYNTH_CFLAGS_REMOVE { |
display "Suppressed compiler flags" |
flavor data |
no_define |
default_value { "" } |
description " |
This option modifies the set of compiler flags for |
building this package. These flags are removed from |
the set of global flags if present." |
} |
} |
} |
|
/doc/devs-watchdog-synth.html
0,0 → 1,526
<!-- Copyright (C) 2002 Red Hat, Inc. --> |
<!-- This material may be distributed only subject to the terms --> |
<!-- and conditions set forth in the Open Publication License, v1.0 --> |
<!-- or later (the latest version is presently available at --> |
<!-- http://www.opencontent.org/openpub/). --> |
<!-- Distribution of the work or derivative of the work in any --> |
<!-- standard (paper) book form is prohibited unless prior --> |
<!-- permission is obtained from the copyright holder. --> |
<HTML |
><HEAD |
><TITLE |
>Synthetic Target Watchdog Device</TITLE |
><meta name="MSSmartTagsPreventParsing" content="TRUE"> |
<META |
NAME="GENERATOR" |
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+ |
"></HEAD |
><BODY |
CLASS="REFENTRY" |
BGCOLOR="#FFFFFF" |
TEXT="#000000" |
LINK="#0000FF" |
VLINK="#840084" |
ALINK="#0000FF" |
><H1 |
><A |
NAME="DEVS-WATCHDOG-SYNTH">Synthetic Target Watchdog Device</H1 |
><DIV |
CLASS="REFNAMEDIV" |
><A |
NAME="AEN4" |
></A |
><H2 |
>Name</H2 |
>Synthetic Target Watchdog Device -- Emulate watchdog hardware in the synthetic target</DIV |
><DIV |
CLASS="REFSECT1" |
><A |
NAME="AEN7" |
></A |
><H2 |
>Overview</H2 |
><P |
>Some target hardware comes equipped with a watchdog timer. Application |
code can start this timer and after a certain period of time, |
typically a second, the watchdog will trigger. Usually this causes the |
hardware to reboot. The application can prevent this by regularly |
resetting the watchdog. An automatic reboot can be very useful when |
deploying hardware in the field: a hardware glitch could cause the |
unit to hang; or the software could receive an unexpected sequence of |
inputs, never seen in the laboratory, causing the system to lock up. |
Often the hardware is still functional, and a reboot sorts out the |
problem with only a brief interruption in service. |
</P |
><P |
>The synthetic target watchdog package emulates watchdog hardware. |
During system initialization watchdog device will be instantiated, |
and the <TT |
CLASS="FILENAME" |
>watchdog.tcl</TT |
> script will be loaded by the |
I/O auxiliary. When the eCos application starts the watchdog device, |
the <TT |
CLASS="FILENAME" |
>watchdog.tcl</TT |
> script will start checking the |
state of the eCos application at one second intervals. A watchdog |
reset call simply involves a message to the I/O auxiliary. If the |
<TT |
CLASS="FILENAME" |
>watchdog.tcl</TT |
> script detects that a second has |
<A |
HREF="devs-watchdog-synth.html#SYNTH-WATCHDOG-WALLCLOCK-ELAPSED" |
>elapsed</A |
> |
without a reset then it will send a <TT |
CLASS="LITERAL" |
>SIGPWR</TT |
> signal |
to the eCos application, causing the latter to terminate. If gdb is |
being used to run the application, the user will get a chance to |
investigate what is happening. This behaviour is different from real |
hardware in that there is no automatic reboot, but the synthetic |
target is used only for development purposes, not deployment in the |
field: if a reboot is desired then this can be achieved very easily |
by using gdb commands to run another instance of the application. |
</P |
></DIV |
><DIV |
CLASS="REFSECT1" |
><A |
NAME="DEVS-WATCHDOG-SYNTH-INSTALL" |
></A |
><H2 |
>Installation</H2 |
><P |
>Before a synthetic target eCos application can use a watchdog device |
it is necessary to build and install host-side support. The relevant |
code resides in the <TT |
CLASS="FILENAME" |
>host</TT |
> |
subdirectory of the synthetic target watchdog package, and building it |
involves the standard <B |
CLASS="COMMAND" |
>configure</B |
>, |
<B |
CLASS="COMMAND" |
>make</B |
> and <B |
CLASS="COMMAND" |
>make install</B |
> steps. The |
implementation of the watchdog support does not require any |
executables, just a Tcl script <TT |
CLASS="FILENAME" |
>watchdog.tcl</TT |
> and |
some support files, so the <B |
CLASS="COMMAND" |
>make</B |
> step is a no-op. |
</P |
><P |
>There are two main ways of building the host-side software. It is |
possible to build both the generic host-side software and all |
package-specific host-side software, including the watchdog support, |
in a single build tree. This involves using the |
<B |
CLASS="COMMAND" |
>configure</B |
> script at the toplevel of the eCos |
repository. For more information on this, see the |
<TT |
CLASS="FILENAME" |
>README.host</TT |
> file at the top of the repository. |
Note that if you have an existing build tree which does not include |
the synthetic target watchdog support then it will be necessary to |
rerun the toplevel configure script: the search for appropriate |
packages happens at configure time. |
</P |
><P |
>The alternative is to build just the host-side for this package. |
This requires a separate build directory, building directly in the |
source tree is disallowed. The <B |
CLASS="COMMAND" |
>configure</B |
> options |
are much the same as for a build from the toplevel, and the |
<TT |
CLASS="FILENAME" |
>README.host</TT |
> file can be consulted for more |
details. It is essential that the watchdog support be configured with |
the same <TT |
CLASS="OPTION" |
>--prefix</TT |
> option as other eCos host-side |
software, especially the I/O auxiliary provided by the architectural |
synthetic target HAL package, otherwise the I/O auxiliary will be |
unable to locate the watchdog support. |
</P |
></DIV |
><DIV |
CLASS="REFSECT1" |
><A |
NAME="SYNTH-WATCHDOG-TARGET-CONFIG" |
></A |
><H2 |
>Target-side |
Configuration</H2 |
><P |
>The watchdog device depends on the generic watchdog support, |
<TT |
CLASS="VARNAME" |
>CYGPKG_IO_WATCHDOG</TT |
>: if the generic support is |
absent then the watchdog device will be inactive. Some templates |
include this generic package by default, but not all. If the |
configuration does not include the generic package then it can be |
added using the eCos configuration tools, for example: |
</P |
><TABLE |
BORDER="5" |
BGCOLOR="#E0E0F0" |
WIDTH="70%" |
><TR |
><TD |
><PRE |
CLASS="SCREEN" |
>$ ecosconfig add CYGPKG_IO_WATCHDOG</PRE |
></TD |
></TR |
></TABLE |
><P |
>By default the configuration will use the hardware-specific support, |
i.e. this package. However the generic watchdog package contains an |
alternative implementation using the kernel alarm facility, and that |
implementation can be selected if desired. However usually it will be |
better to rely on an external watchdog facility as provided by the I/O |
auxiliary and the <TT |
CLASS="FILENAME" |
>watchdog.tcl</TT |
> script: if there |
are serious problems within the application, for example memory |
corruption, then an internal software-only implementation will not be |
reliable. |
</P |
><P |
>The watchdog resolution is currently fixed to one second: if the |
device does not receive a reset signal at least once a second then |
the watchdog will trigger and the eCos application will be terminated |
with a <TT |
CLASS="LITERAL" |
>SIGPWR</TT |
> signal. The current implementation |
does not allow this resolution to be changed. |
</P |
><P |
>On some targets the watchdog device does not perform a hard reset. |
Instead the device works more or less via the interrupt subsystem, |
allowing application code to install action routines that will be |
called when the watchdog triggers. The synthetic target watchdog |
support effectively does perform a hard reset, by sending a |
<TT |
CLASS="LITERAL" |
>SIGPWR</TT |
> signal to the eCos application, and there is |
no support for action routines. |
</P |
><P |
>The synthetic target watchdog package provides some configuration |
options for manipulating the compiler flags used for building the |
target-side code. That code is fairly simple, so for nearly all |
applications the default flags will suffice. |
</P |
><P |
>It should be noted that the watchdog device is subject to selective |
linking. Unless some code explicitly references the device, for |
example by calling the start and reset functions, the watchdog support |
will not appear in the final executable. This is desirable because a |
watchdog device has no effect until started. |
</P |
></DIV |
><DIV |
CLASS="REFSECT1" |
><A |
NAME="SYNTH-WATCHDOG-WALLCLOCK-ELAPSED" |
></A |
><H2 |
>Wallclock versus Elapsed Time</H2 |
><P |
>On real hardware the watchdog device uses wallclock time: if the |
device does not receive a reset signal within a set period of time |
then the watchdog will trigger. When developing for the synthetic |
target this is not always appropriate. There may be other processes |
running, using up some or most of the cpu time. For example, the |
application may be written such that it will issue a reset after some |
calculations which are known to complete within half a second, well |
within the one-second resolution of the watchdog device. However if |
other Linux processes are running then the synthetic target |
application may get timesliced, and half a second of computation may |
take several seconds of wallclock time. |
</P |
><P |
>Another problem with using wallclock time is that it interferes with |
debugging: if the application hits a breakpoint then it is unlikely |
that the user will manage to restart it in less than a second, and the |
watchdog will not get reset in time. |
</P |
><P |
>To avoid these problems the synthetic target watchdog normally uses |
consumed cpu time rather than wallclock time. If the application is |
timesliced or if it is halted inside gdb then it does not consume any |
cpu time. The application actually has to spend a whole second's worth |
of cpu cycles without issuing a reset before the watchdog triggers. |
</P |
><P |
>However using consumed cpu time is not a perfect solution either. If |
the application makes blocking system calls then it is not using cpu |
time. Interaction with the I/O auxiliary involves system calls, but |
these should take only a short amount of time so their effects can be |
ignored. If the application makes direct system calls such as |
<TT |
CLASS="FUNCTION" |
>cyg_hal_sys_read</TT |
> then the system behaviour |
becomes undefined. In addition by default the idle thread will make |
blocking <TT |
CLASS="FUNCTION" |
>select</TT |
> system calls, effectively waiting |
until an interrupt occurs. If an application spends much of its time |
idle then the watchdog device may take much longer to trigger than |
expected. It may be desirable to enable the synthetic target HAL |
configuration option <TT |
CLASS="VARNAME" |
>CYGIMP_HAL_IDLE_THREAD_SPIN</TT |
>, |
causing the idle thread to spin rather than block, at the cost of |
wasted cpu cycles. |
</P |
><P |
>The default is to use consumed cpu time, but this can be changed in |
the target definition file: |
</P |
><TABLE |
BORDER="5" |
BGCOLOR="#E0E0F0" |
WIDTH="70%" |
><TR |
><TD |
><PRE |
CLASS="PROGRAMLISTING" |
>synth_device watchdog { |
use wallclock_time |
… |
}</PRE |
></TD |
></TR |
></TABLE |
></DIV |
><DIV |
CLASS="REFSECT1" |
><A |
NAME="SYNTH-WATCHDOG-GUI" |
></A |
><H2 |
>User Interface</H2 |
><P |
>When the synthetic target is run in graphical mode the watchdog device |
extends the user interface in two ways. The <SPAN |
CLASS="GUIMENU" |
>Help</SPAN |
> |
menu is extended with an entry for the watchdog-specific |
documentation. There is also a graphical display of the current state |
of the watchdog. Initially the watchdog is asleep: |
</P |
><DIV |
CLASS="INFORMALFIGURE" |
><A |
NAME="AEN60"><P |
></P |
><DIV |
CLASS="MEDIAOBJECT" |
><P |
><IMG |
SRC="asleep.gif" |
ALIGN="CENTER"></P |
></DIV |
><P |
></P |
></DIV |
><P |
>When application code starts the device the watchdog will begin to |
keep an eye on things (or occasionally both eyes). |
</P |
><DIV |
CLASS="INFORMALFIGURE" |
><A |
NAME="AEN65"><P |
></P |
><DIV |
CLASS="MEDIAOBJECT" |
><P |
><IMG |
SRC="awake.gif" |
ALIGN="CENTER"></P |
></DIV |
><P |
></P |
></DIV |
><P |
>If the watchdog triggers the display will change again, and optionally |
the user can receive an audible alert. The location of the watchdog |
display within the I/O auxiliary's window can be controlled via |
a <B |
CLASS="COMMAND" |
>watchdog_pack</B |
> entry in the target definition |
file. For example the following can be used to put the watchdog |
display to the right of the central text window: |
</P |
><TABLE |
BORDER="5" |
BGCOLOR="#E0E0F0" |
WIDTH="70%" |
><TR |
><TD |
><PRE |
CLASS="PROGRAMLISTING" |
>synth_device watchdog { |
watchdog_pack -in .main.e -side top |
… |
}</PRE |
></TD |
></TR |
></TABLE |
><P |
>The user interface section of the generic synthetic target HAL |
documentation can be consulted for more information on window packing. |
</P |
><P |
>By default the watchdog support will not generate an audible alert |
when the watchdog triggers, to avoid annoying colleagues. Sound can be |
enabled in the target definition file, and two suitable files |
<TT |
CLASS="FILENAME" |
>sound1.au</TT |
> and <TT |
CLASS="FILENAME" |
>sound2.au</TT |
> are |
supplied as standard: |
</P |
><TABLE |
BORDER="5" |
BGCOLOR="#E0E0F0" |
WIDTH="70%" |
><TR |
><TD |
><PRE |
CLASS="PROGRAMLISTING" |
>synth_device watchdog { |
sound sound1.au |
… |
}</PRE |
></TD |
></TR |
></TABLE |
><P |
>An absolute path can be specified if desired: |
</P |
><TABLE |
BORDER="5" |
BGCOLOR="#E0E0F0" |
WIDTH="70%" |
><TR |
><TD |
><PRE |
CLASS="PROGRAMLISTING" |
>synth_device watchdog { |
sound /usr/share/emacs/site-lisp/emacspeak/sounds/default-8k/alarm.au |
… |
}</PRE |
></TD |
></TR |
></TABLE |
><P |
>Sound facilities are not built into the I/O auxiliary itself, instead |
an external program is used. The default player is |
<B |
CLASS="COMMAND" |
>play</B |
>, a front-end to the |
<SPAN |
CLASS="APPLICATION" |
>sox</SPAN |
> application shipped with some Linux |
distributions. If another player should be used then this can be |
specified in the target definition file: |
</P |
><TABLE |
BORDER="5" |
BGCOLOR="#E0E0F0" |
WIDTH="70%" |
><TR |
><TD |
><PRE |
CLASS="PROGRAMLISTING" |
>synth_device watchdog { |
… |
sound_player my_sound_player</PRE |
></TD |
></TR |
></TABLE |
><P |
>The specified program will be run in the background with a single |
argument, the sound file. |
</P |
></DIV |
><DIV |
CLASS="REFSECT1" |
><A |
NAME="DEVS-WATCHDOG-SYNTH-ARGS" |
></A |
><H2 |
>Command Line Arguments</H2 |
><P |
>The watchdog support does not use any command line arguments. All |
configuration is handled through the target definition file. |
</P |
></DIV |
><DIV |
CLASS="REFSECT1" |
><A |
NAME="DEVS-WATCHDOG-SYNTH-HOOKS" |
></A |
><H2 |
>Hooks</H2 |
><P |
>The watchdog support does not provide any hooks for use by other |
scripts. There is rarely any need for customizing the system's |
behaviour when a watchdog triggers because those should be rare |
events, even during application development. |
</P |
></DIV |
><DIV |
CLASS="REFSECT1" |
><A |
NAME="DEVS-WATCHDOG-SYNTH-TCL" |
></A |
><H2 |
>Additional Tcl Procedures</H2 |
><P |
>The watchdog support does not provide any additional Tcl procedures or |
variables for use by other scripts. |
</P |
></DIV |
></BODY |
></HTML |
> |
/doc/synth_watchdog.sgml
0,0 → 1,342
<!-- DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN" --> |
|
<!-- {{{ Banner --> |
|
<!-- =============================================================== --> |
<!-- --> |
<!-- synth_watchdog.sgml --> |
<!-- --> |
<!-- Synthetic target watchdog device --> |
<!-- --> |
<!-- =============================================================== --> |
<!-- ####COPYRIGHTBEGIN#### --> |
<!-- --> |
<!-- =============================================================== --> |
<!-- Copyright (C) 2002 Bart Veer --> |
<!-- This material may be distributed only subject to the terms --> |
<!-- and conditions set forth in the Open Publication License, v1.0 --> |
<!-- or later (the latest version is presently available at --> |
<!-- http://www.opencontent.org/openpub/) --> |
<!-- =============================================================== --> |
<!-- --> |
<!-- ####COPYRIGHTEND#### --> |
<!-- =============================================================== --> |
<!-- #####DESCRIPTIONBEGIN#### --> |
<!-- --> |
<!-- Author(s): bartv --> |
<!-- Contact(s): bartv --> |
<!-- Date: 2002/09/09 --> |
<!-- Version: 0.01 --> |
<!-- --> |
<!-- ####DESCRIPTIONEND#### --> |
<!-- =============================================================== --> |
|
<!-- }}} --> |
|
<part id="devs-watchdog-synth-ref"> |
<!-- reference id="devs-watchdog-synth-ref" --> |
<title>Synthetic Target Watchdog Device</title> |
|
<refentry id="devs-watchdog-synth"> |
<refmeta> |
<refentrytitle>Synthetic Target Watchdog Device</refentrytitle> |
</refmeta> |
<refnamediv> |
<refname>Synthetic Target Watchdog Device</refname> |
<refpurpose>Emulate watchdog hardware in the synthetic target</refpurpose> |
</refnamediv> |
|
<refsect1><title>Overview</title> |
<para> |
Some target hardware comes equipped with a watchdog timer. Application |
code can start this timer and after a certain period of time, |
typically a second, the watchdog will trigger. Usually this causes the |
hardware to reboot. The application can prevent this by regularly |
resetting the watchdog. An automatic reboot can be very useful when |
deploying hardware in the field: a hardware glitch could cause the |
unit to hang; or the software could receive an unexpected sequence of |
inputs, never seen in the laboratory, causing the system to lock up. |
Often the hardware is still functional, and a reboot sorts out the |
problem with only a brief interruption in service. |
</para> |
<para> |
The synthetic target watchdog package emulates watchdog hardware. |
During system initialization watchdog device will be instantiated, |
and the <filename>watchdog.tcl</filename> script will be loaded by the |
I/O auxiliary. When the eCos application starts the watchdog device, |
the <filename>watchdog.tcl</filename> script will start checking the |
state of the eCos application at one second intervals. A watchdog |
reset call simply involves a message to the I/O auxiliary. If the |
<filename>watchdog.tcl</filename> script detects that a second has |
<link linkend="synth-watchdog-wallclock-elapsed">elapsed</link> |
without a reset then it will send a <literal>SIGPWR</literal> signal |
to the eCos application, causing the latter to terminate. If gdb is |
being used to run the application, the user will get a chance to |
investigate what is happening. This behaviour is different from real |
hardware in that there is no automatic reboot, but the synthetic |
target is used only for development purposes, not deployment in the |
field: if a reboot is desired then this can be achieved very easily |
by using gdb commands to run another instance of the application. |
</para> |
</refsect1> |
|
<refsect1 id="devs-watchdog-synth-install"><title>Installation</title> |
<para> |
Before a synthetic target eCos application can use a watchdog device |
it is necessary to build and install host-side support. The relevant |
code resides in the <filename class="directory">host</filename> |
subdirectory of the synthetic target watchdog package, and building it |
involves the standard <command>configure</command>, |
<command>make</command> and <command>make install</command> steps. The |
implementation of the watchdog support does not require any |
executables, just a Tcl script <filename>watchdog.tcl</filename> and |
some support files, so the <command>make</command> step is a no-op. |
</para> |
<para> |
There are two main ways of building the host-side software. It is |
possible to build both the generic host-side software and all |
package-specific host-side software, including the watchdog support, |
in a single build tree. This involves using the |
<command>configure</command> script at the toplevel of the eCos |
repository. For more information on this, see the |
<filename>README.host</filename> file at the top of the repository. |
Note that if you have an existing build tree which does not include |
the synthetic target watchdog support then it will be necessary to |
rerun the toplevel configure script: the search for appropriate |
packages happens at configure time. |
</para> |
<para> |
The alternative is to build just the host-side for this package. |
This requires a separate build directory, building directly in the |
source tree is disallowed. The <command>configure</command> options |
are much the same as for a build from the toplevel, and the |
<filename>README.host</filename> file can be consulted for more |
details. It is essential that the watchdog support be configured with |
the same <option>--prefix</option> option as other eCos host-side |
software, especially the I/O auxiliary provided by the architectural |
synthetic target HAL package, otherwise the I/O auxiliary will be |
unable to locate the watchdog support. |
</para> |
</refsect1> |
|
<refsect1 id="synth-watchdog-target-config"><title>Target-side |
Configuration</title> |
<para> |
The watchdog device depends on the generic watchdog support, |
<varname>CYGPKG_IO_WATCHDOG</varname>: if the generic support is |
absent then the watchdog device will be inactive. Some templates |
include this generic package by default, but not all. If the |
configuration does not include the generic package then it can be |
added using the eCos configuration tools, for example: |
</para> |
<screen> |
$ ecosconfig add CYGPKG_IO_WATCHDOG |
</screen> |
<para> |
By default the configuration will use the hardware-specific support, |
i.e. this package. However the generic watchdog package contains an |
alternative implementation using the kernel alarm facility, and that |
implementation can be selected if desired. However usually it will be |
better to rely on an external watchdog facility as provided by the I/O |
auxiliary and the <filename>watchdog.tcl</filename> script: if there |
are serious problems within the application, for example memory |
corruption, then an internal software-only implementation will not be |
reliable. |
</para> |
<para> |
The watchdog resolution is currently fixed to one second: if the |
device does not receive a reset signal at least once a second then |
the watchdog will trigger and the eCos application will be terminated |
with a <literal>SIGPWR</literal> signal. The current implementation |
does not allow this resolution to be changed. |
</para> |
<para> |
On some targets the watchdog device does not perform a hard reset. |
Instead the device works more or less via the interrupt subsystem, |
allowing application code to install action routines that will be |
called when the watchdog triggers. The synthetic target watchdog |
support effectively does perform a hard reset, by sending a |
<literal>SIGPWR</literal> signal to the eCos application, and there is |
no support for action routines. |
</para> |
<para> |
The synthetic target watchdog package provides some configuration |
options for manipulating the compiler flags used for building the |
target-side code. That code is fairly simple, so for nearly all |
applications the default flags will suffice. |
</para> |
<para> |
It should be noted that the watchdog device is subject to selective |
linking. Unless some code explicitly references the device, for |
example by calling the start and reset functions, the watchdog support |
will not appear in the final executable. This is desirable because a |
watchdog device has no effect until started. |
</para> |
</refsect1> |
|
<refsect1 id="synth-watchdog-wallclock-elapsed"><title>Wallclock versus Elapsed Time</title> |
<para> |
On real hardware the watchdog device uses wallclock time: if the |
device does not receive a reset signal within a set period of time |
then the watchdog will trigger. When developing for the synthetic |
target this is not always appropriate. There may be other processes |
running, using up some or most of the cpu time. For example, the |
application may be written such that it will issue a reset after some |
calculations which are known to complete within half a second, well |
within the one-second resolution of the watchdog device. However if |
other Linux processes are running then the synthetic target |
application may get timesliced, and half a second of computation may |
take several seconds of wallclock time. |
</para> |
<para> |
Another problem with using wallclock time is that it interferes with |
debugging: if the application hits a breakpoint then it is unlikely |
that the user will manage to restart it in less than a second, and the |
watchdog will not get reset in time. |
</para> |
<para> |
To avoid these problems the synthetic target watchdog normally uses |
consumed cpu time rather than wallclock time. If the application is |
timesliced or if it is halted inside gdb then it does not consume any |
cpu time. The application actually has to spend a whole second's worth |
of cpu cycles without issuing a reset before the watchdog triggers. |
</para> |
<para> |
However using consumed cpu time is not a perfect solution either. If |
the application makes blocking system calls then it is not using cpu |
time. Interaction with the I/O auxiliary involves system calls, but |
these should take only a short amount of time so their effects can be |
ignored. If the application makes direct system calls such as |
<function>cyg_hal_sys_read</function> then the system behaviour |
becomes undefined. In addition by default the idle thread will make |
blocking <function>select</function> system calls, effectively waiting |
until an interrupt occurs. If an application spends much of its time |
idle then the watchdog device may take much longer to trigger than |
expected. It may be desirable to enable the synthetic target HAL |
configuration option <varname>CYGIMP_HAL_IDLE_THREAD_SPIN</varname>, |
causing the idle thread to spin rather than block, at the cost of |
wasted cpu cycles. |
</para> |
<para> |
The default is to use consumed cpu time, but this can be changed in |
the target definition file: |
</para> |
<programlisting> |
synth_device watchdog { |
use wallclock_time |
… |
} |
</programlisting> |
</refsect1> |
|
<refsect1 id="synth-watchdog-gui"><title>User Interface</title> |
<para> |
When the synthetic target is run in graphical mode the watchdog device |
extends the user interface in two ways. The <guimenu>Help</guimenu> |
menu is extended with an entry for the watchdog-specific |
documentation. There is also a graphical display of the current state |
of the watchdog. Initially the watchdog is asleep: |
</para> |
<informalfigure PgWide=1> |
<mediaobject> |
<imageobject> |
<imagedata fileref="asleep.png" Scalefit=1 Align="Center"> |
</imageobject> |
</mediaobject> |
</informalfigure> |
<para> |
When application code starts the device the watchdog will begin to |
keep an eye on things (or occasionally both eyes). |
</para> |
<informalfigure PgWide=1> |
<mediaobject> |
<imageobject> |
<imagedata fileref="awake.png" Scalefit=1 Align="Center"> |
</imageobject> |
</mediaobject> |
</informalfigure> |
<para> |
If the watchdog triggers the display will change again, and optionally |
the user can receive an audible alert. The location of the watchdog |
display within the I/O auxiliary's window can be controlled via |
a <command>watchdog_pack</command> entry in the target definition |
file. For example the following can be used to put the watchdog |
display to the right of the central text window: |
</para> |
<programlisting> |
synth_device watchdog { |
watchdog_pack -in .main.e -side top |
… |
} |
</programlisting> |
<para> |
The user interface section of the generic synthetic target HAL |
documentation can be consulted for more information on window packing. |
</para> |
<para> |
By default the watchdog support will not generate an audible alert |
when the watchdog triggers, to avoid annoying colleagues. Sound can be |
enabled in the target definition file, and two suitable files |
<filename>sound1.au</filename> and <filename>sound2.au</filename> are |
supplied as standard: |
</para> |
<programlisting> |
synth_device watchdog { |
sound sound1.au |
… |
} |
</programlisting> |
<para> |
An absolute path can be specified if desired: |
</para> |
<programlisting> |
synth_device watchdog { |
sound /usr/share/emacs/site-lisp/emacspeak/sounds/default-8k/alarm.au |
… |
} |
</programlisting> |
<para> |
Sound facilities are not built into the I/O auxiliary itself, instead |
an external program is used. The default player is |
<command>play</command>, a front-end to the |
<application>sox</application> application shipped with some Linux |
distributions. If another player should be used then this can be |
specified in the target definition file: |
</para> |
<programlisting> |
synth_device watchdog { |
… |
sound_player my_sound_player |
</programlisting> |
<para> |
The specified program will be run in the background with a single |
argument, the sound file. |
</para> |
</refsect1> |
|
<refsect1 id="devs-watchdog-synth-args"><title>Command Line Arguments</title> |
<para> |
The watchdog support does not use any command line arguments. All |
configuration is handled through the target definition file. |
</para> |
</refsect1> |
|
<refsect1 id="devs-watchdog-synth-hooks"><title>Hooks</title> |
<para> |
The watchdog support does not provide any hooks for use by other |
scripts. There is rarely any need for customizing the system's |
behaviour when a watchdog triggers because those should be rare |
events, even during application development. |
</para> |
</refsect1> |
|
<refsect1 id="devs-watchdog-synth-tcl"><title>Additional Tcl Procedures</title> |
<para> |
The watchdog support does not provide any additional Tcl procedures or |
variables for use by other scripts. |
</para> |
</refsect1> |
|
</refentry> |
</part> |
<!-- /reference --> |
/doc/awake.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
doc/awake.png
Property changes :
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: doc/asleep.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: doc/asleep.png
===================================================================
--- doc/asleep.png (nonexistent)
+++ doc/asleep.png (revision 174)
doc/asleep.png
Property changes :
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: doc/makefile
===================================================================
--- doc/makefile (nonexistent)
+++ doc/makefile (revision 174)
@@ -0,0 +1,34 @@
+#=============================================================================
+#
+# makefile
+#
+# For building the synthetic target watchdog package documentation
+#
+#=============================================================================
+#####COPYRIGHTBEGIN####
+#
+# ===============================================================
+# Copyright (C) 2002 Bart Veer
+# This material may be distributed only subject to the terms
+# and conditions set forth in the Open Publication License, v1.0
+# or later (the latest version is presently available at
+# http://www.opencontent.org/openpub/)
+# ===============================================================
+#
+#####COPYRIGHTEND####
+#=============================================================================
+#####DESCRIPTIONBEGIN####
+#
+# Author(s): bartv
+# Date: 2002-09-09
+#####DESCRIPTIONEND####
+#=============================================================================
+
+TOPLEVEL := ../../../../..
+MAIN_SGML := synth_watchdog.sgml
+MAIN_HTML := devs-watchdog-synth.html
+MAIN_PDF := devs-watchdog-synth.pdf
+OTHER_SGML :=
+PICTURES :=
+
+include $(TOPLEVEL)/pkgconf/rules.doc
Index: src/synth_watchdog.cxx
===================================================================
--- src/synth_watchdog.cxx (nonexistent)
+++ src/synth_watchdog.cxx (revision 174)
@@ -0,0 +1,159 @@
+//==========================================================================
+//
+// synth_watchdog.cxx
+//
+// Watchdog driver for the synthetic target
+//
+//==========================================================================
+//####ECOSGPLCOPYRIGHTBEGIN####
+// -------------------------------------------
+// This file is part of eCos, the Embedded Configurable Operating System.
+// Copyright (C) 2002 Bart Veer
+//
+// eCos is free software; you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2 or (at your option) any later version.
+//
+// eCos 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 General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with eCos; if not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+//
+// As a special exception, if other files instantiate templates or use macros
+// or inline functions from this file, or you compile this file and link it
+// with other works to produce a work based on this file, this file does not
+// by itself cause the resulting work to be covered by the GNU General Public
+// License. However the source code for this file must still be made available
+// in accordance with section (3) of the GNU General Public License.
+//
+// This exception does not invalidate any other reasons why a work based on
+// this file might be covered by the GNU General Public License.
+//
+// Alternative licenses for eCos may be arranged by contacting the
+// copyright holder(s).
+// -------------------------------------------
+//####ECOSGPLCOPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s): bartv
+// Contributors: bartv
+// Date: 2002-09-04
+//
+//####DESCRIPTIONEND####
+//==========================================================================
+
+#include
+#include
+
+#ifdef CYGIMP_WATCHDOG_HARDWARE
+
+#include
+#include
+#include
+#include
+#include
+
+// FIXME: right now the generic watchdog header depends on the
+// kernel. That should be fixed in the watchdog code, but will
+// affect some device drivers as well
+#include
+#include
+
+// Protocol between host and target
+#define SYNTH_WATCHDOG_START 0x01
+#define SYNTH_WATCHDOG_RESET 0x02
+
+// The synthetic target's watchdog implementation involves interaction
+// with a watchdog.tcl script running in the I/O auxiliary. The device
+// must be instantiated during system initialization, preferably via
+// a prioritized C++ static constructor. The generic watchdog package
+// does have a static object, but it is not prioritized. If
+// CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG is enabled then that object's
+// constructor would get called too late.
+//
+// Instead a private class is defined here, and once instance is created.
+// That instance gets referenced by the Cyg_Watchdog members, so
+// selective linking does not get in the way. Instantiation happens inside
+// the constructor, and the main Cyg_Watchdog::start() and reset() functions
+// involve passing a message to the host-side.
+//
+// There is an open issue re. resolution. Usually the hardware imposes
+// limits on what resolutions are valid, in fact there may be only one.
+// With the synthetic target it would be possible to configure the
+// desired resolution either on the target-side using a CDL option, or
+// on the host-side using the target definition file. The resolution
+// would have to be fairly coarse, probably at least 0.1 seconds,
+// to allow for communication overheads. It is not clear whether
+// target-side or host-side configuration is more appropriate, so for
+// now a fixed resolution of one second is used.
+
+class _Synth_Watchdog {
+ public:
+ _Synth_Watchdog();
+ ~_Synth_Watchdog() { }
+
+ cyg_uint64 resolution;
+};
+
+// A static instance of the _Synth_Watchdog class, whose constructor will
+// be called at the right time to instantiate host-side support.
+static _Synth_Watchdog _synth_watchdog_object CYGBLD_ATTRIB_INIT_PRI(CYG_INIT_DRIVERS);
+
+// Id for communicating with the watchdog instance in the auxiliary
+static int aux_id = -1;
+
+_Synth_Watchdog::_Synth_Watchdog()
+{
+ // SIGPWR is disabled by default. It has to be reenabled.
+ struct cyg_hal_sys_sigset_t blocked;
+ CYG_HAL_SYS_SIGEMPTYSET(&blocked);
+ CYG_HAL_SYS_SIGADDSET(&blocked, CYG_HAL_SYS_SIGPWR);
+ cyg_hal_sys_sigprocmask(CYG_HAL_SYS_SIG_UNBLOCK, &blocked, (cyg_hal_sys_sigset_t*) 0);
+
+ resolution = 1000000000LL;
+ if (synth_auxiliary_running) {
+ aux_id = synth_auxiliary_instantiate("devs/watchdog/synth",
+ SYNTH_MAKESTRING(CYGPKG_DEVS_WATCHDOG_SYNTH),
+ "watchdog",
+ (const char*) 0,
+ (const char*) 0);
+ }
+}
+
+// Hardware initialization. This has already happened in the
+// _Synth_Watchdog constructor, all that is needed here is to
+// propagate the resolution.
+void
+Cyg_Watchdog::init_hw(void)
+{
+ resolution = _synth_watchdog_object.resolution;
+}
+
+void
+Cyg_Watchdog::start(void)
+{
+ if (synth_auxiliary_running && (-1 != aux_id)) {
+ synth_auxiliary_xchgmsg(aux_id, SYNTH_WATCHDOG_START, 0, 0,
+ (const unsigned char*)0, 0,
+ (int *) 0,
+ (unsigned char*) 0, (int*) 0, 0);
+ }
+}
+
+void
+Cyg_Watchdog::reset()
+{
+ if (synth_auxiliary_running && (-1 != aux_id)) {
+ synth_auxiliary_xchgmsg(aux_id, SYNTH_WATCHDOG_RESET, 0, 0,
+ (const unsigned char*)0, 0,
+ (int *) 0,
+ (unsigned char*) 0, (int*) 0, 0);
+ }
+}
+
+#endif // CYGIMP_WATCHDOG_HARDWARE
Index: ChangeLog
===================================================================
--- ChangeLog (nonexistent)
+++ ChangeLog (revision 174)
@@ -0,0 +1,69 @@
+2003-03-23 Iztok Zupet
+
+ * doc/synth_watchdog.sgml: Replaced .gif with .png to allow for
+ PDF build.
+
+ * doc/asleep.gif, doc/awake.gif: Converted to *.png and deleted.
+ * doc/asleep.png, doc/awake.png: New files.
+
+2003-02-25 Jonathan Larmour
+
+ * doc/synth_watchdog.sgml: Declare as not to get
+ correct TOC numbering.
+
+2003-02-24 Jonathan Larmour
+
+ * cdl/synth_watchdog.cdl: Add doc link.
+
+ * doc/synth_watchdog.sgml: Comment out DOCTYPE for now to allow
+ building with standard doc build.
+ Add an enclosing so it's structured better with standard
+ doc build.
+
+2003-02-12 Bart Veer
+
+ * host/Makefile.in:
+ Regenerate after toplevel acinclude.m4 update
+
+2002-09-16 Bart Veer
+
+ * cdl/synth_watchdog.cdl:
+ Synthetic watchdog device should only be active if the
+ generic watchdog support is present
+
+2002-09-04 Bart Veer
+
+ * Synthetic target watchdog package created
+
+//===========================================================================
+//####ECOSGPLCOPYRIGHTBEGIN####
+// -------------------------------------------
+// This file is part of eCos, the Embedded Configurable Operating System.
+// Copyright (C) 2002, 2003 Bart Veer
+//
+// eCos is free software; you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2 or (at your option) any later version.
+//
+// eCos 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 General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with eCos; if not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+//
+// As a special exception, if other files instantiate templates or use macros
+// or inline functions from this file, or you compile this file and link it
+// with other works to produce a work based on this file, this file does not
+// by itself cause the resulting work to be covered by the GNU General Public
+// License. However the source code for this file must still be made available
+// in accordance with section (3) of the GNU General Public License.
+//
+// This exception does not invalidate any other reasons why a work based on
+// this file might be covered by the GNU General Public License.
+// -------------------------------------------
+//####ECOSGPLCOPYRIGHTEND####
+//===========================================================================
+
Index: host/alarm.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: host/alarm.gif
===================================================================
--- host/alarm.gif (nonexistent)
+++ host/alarm.gif (revision 174)
host/alarm.gif
Property changes :
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: host/doghouse.pov
===================================================================
--- host/doghouse.pov (nonexistent)
+++ host/doghouse.pov (revision 174)
@@ -0,0 +1,161 @@
+// A simple "doghouse" picture, used for the synthetic target
+// watchdog device host-side.
+//
+// This file is normally built using the following command line:
+//
+// x-povray +Idoghouse.pov +W128 +H128 +D +Q9 +AM2 +A0.9 +FP
+
+#include "consts.inc"
+#include "colors.inc"
+#include "shapes.inc"
+#include "textures.inc"
+#include "skies.inc"
+#include "woods.inc"
+
+camera {
+ location <4.5, 2.2, -5>
+ look_at <2, 2, 2>
+}
+
+light_source {
+ <7, 4, -1.5>
+ color White
+}
+
+sky_sphere { S_Cloud2 scale 2 }
+background { colour LightBlue }
+
+plane {
+ y 0
+ texture {
+ pigment { color red 0.5 green 0.98 blue 0 turbulence 0.5}
+ normal { bumps 0.4 scale 0.1 }
+ }
+}
+
+fog {
+ distance 40
+ fog_type Ground_Fog
+ fog_offset 1
+ fog_alt 1
+ colour rgbf<0, 0.2, 0.2, 0.3>
+ turbulence 0.2
+}
+
+// A plank is a 1x1x0.1 block with a corner at the origin. The edges are
+// slightly rounded, to make sure that the plank boundaries are just
+// about visible.
+#declare Plank =
+ superellipsoid { <0.03,0.03> scale <0.5,0.5,0.05> translate <0.5,0.5,0.05> texture { T_Wood10 } }
+
+// A variant, for the roof
+#declare RoofPlank =
+ superellipsoid { <0.05,0.05> scale <0.5,0.5,0.05> translate <0.5,0.5,0.05> texture { T_Wood14 } }
+
+// The front and back, a rectangle with a triangle on top.
+// Going clockwise from the bottom left, the coordinates are:
+// <0,0> <0,3.2>, <2.4.5>, <4,3.2>, <4.0>
+// Each is made from five horizontal planks.
+//
+// Note: this doghouse is not intended to be an example of good
+// woodworking. For example, butt joints for the walls are a bad idea.
+// Most importantly the roof should involve lapped joints with a
+// sensible ridge, the current construction is not going to keep the
+// rain out.
+#declare RoofAngle = degrees(atan2(1.3,2));
+#declare RoofAngleR = atan2(1.3,2);
+
+#declare FrontBack =
+ difference {
+ union {
+ object { Plank scale <4,1,1> translate <0,0,0> }
+ object { Plank scale <4,1,1> translate <0,1,0> }
+ object { Plank scale <4,1,1> translate <0,2,0> }
+ object { Plank scale <4,1,1> translate <0,3,0> }
+ object { Plank scale <4,1,1> translate <0,4,0> }
+ }
+ union {
+ box { <0,0,0> <4,4,1> rotate <0,0,RoofAngle> translate <0,3.2,-0.5> }
+ box { <0,0,0> <4,4,1> rotate <0,0, -1 * RoofAngle> translate <2,4.5,-0.5> }
+ pigment { Black }
+ }
+ }
+
+// The front also has some text to name the dog, and a
+// cutout for the opening.
+object {
+ difference {
+ object { FrontBack }
+ union {
+ text {
+ ttf "cyrvetic.ttf" "FIFI" 0.1 0
+ translate <1.2, 2.8, -0.05>
+ }
+ box { <1,0,-0.5> <3,2.2,0.5> }
+ object {
+ cylinder { <0,0,0> <0,0,1> 1 }
+ scale <1,0.33,1>
+ translate <2,2.2,-0.5>
+ }
+ pigment { Black }
+ }
+ }
+}
+
+// The back, nothing fancy needed here. The doghouse is twice
+// as deep as it is wide.
+object { FrontBack translate <0,0,8> }
+
+// A floor, to prevent any bright grass showing inside
+box { <0.05,0,0.05> <3.95,0.05,7.95> texture { T_Wood3 } }
+
+// LHS
+object { Plank scale <8,1,1> rotate <0,-90,0> translate <0,0,0.1> }
+object { Plank scale <8,1,1> rotate <0,-90,0> translate <0,1,0.1> }
+object { Plank scale <8,1,1> rotate <0,-90,0> translate <0,2,0.1> }
+
+// RHS
+object { Plank scale <8,1,1> rotate <0,-90,0> translate <4,0,0.1> }
+object { Plank scale <8,1,1> rotate <0,-90,0> translate <4,1,0.1> }
+object { Plank scale <8,1,1> rotate <0,-90,0> translate <4,2,0.1> }
+
+// Now for the roof. The top of the roof is at <2,4.5,0>, and the
+// corners are at <0,3.2,0> and <4,3.2,0>. The planks are 0.1 units
+// thick.
+
+#declare RoofPlank =
+ superellipsoid { <0.05,0.05> scale <0.5,0.5,0.05> translate <0.5,0.5,0.05> texture { T_Wood14 } }
+
+#declare RoofPlank_L = object {
+ RoofPlank
+ rotate <0, -90, RoofAngle - 90>
+ scale<1,1,8.5>
+}
+
+#declare RoofPlank_R = object {
+ RoofPlank
+ rotate <0, -90, -90 - RoofAngle>
+ scale<1,1,8.5>
+}
+
+object { RoofPlank_L translate<2 - (1 * cos(RoofAngleR)), 4.5 - (1 * sin(RoofAngleR)), -0.25> }
+object { RoofPlank_L translate<2 - (2 * cos(RoofAngleR)), 4.5 - (2 * sin(RoofAngleR)), -0.25> }
+object { RoofPlank_L translate<2 - (3 * cos(RoofAngleR)), 4.5 - (3 * sin(RoofAngleR)), -0.25> }
+
+object { RoofPlank_R translate<2 + (-0.1 * cos(RoofAngleR)), 4.5 - (-0.1 * sin(RoofAngleR)), -0.25> }
+object { RoofPlank_R translate<2 + (0.9 * cos(RoofAngleR)), 4.5 - (0.9 * sin(RoofAngleR)), -0.25> }
+object { RoofPlank_R translate<2 + (1.9 * cos(RoofAngleR)), 4.5 - (1.9 * sin(RoofAngleR)), -0.25> }
+
+// And just for fun, a dog bowl.
+object {
+ merge {
+ difference {
+ torus { 1.0 0.5 }
+ box { <-1,-1,-1> <1,0,1> pigment { Black } }
+ }
+ cylinder { <0,0,0> <0,0.2,0> 0.9 }
+ }
+ scale <0.5,0.5,0.5>
+ translate <-0.5,0,-0.7>
+ pigment { Yellow }
+}
Index: host/watchdog.tcl
===================================================================
--- host/watchdog.tcl (nonexistent)
+++ host/watchdog.tcl (revision 174)
@@ -0,0 +1,425 @@
+# {{{ Banner
+
+# ============================================================================
+#
+# watchdog.tcl
+#
+# Watchdog support for the eCos synthetic target I/O auxiliary
+#
+# ============================================================================
+# ####COPYRIGHTBEGIN####
+#
+# ----------------------------------------------------------------------------
+# Copyright (C) 2002 Bart Veer
+#
+# This file is part of the eCos host tools.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2 of the License, 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 General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# ----------------------------------------------------------------------------
+#
+# ####COPYRIGHTEND####
+# ============================================================================
+# #####DESCRIPTIONBEGIN####
+#
+# Author(s): bartv
+# Contact(s): bartv
+# Date: 2002/09/04
+# Version: 0.01
+# Description:
+# Implementation of the watchdog device. This script should only ever
+# be run from inside the ecosynth auxiliary.
+#
+# ####DESCRIPTIONEND####
+# ============================================================================
+
+# }}}
+
+namespace eval watchdog {
+
+ # Was initialization successful?
+ variable init_ok 1
+
+ # Has the alarm triggered?
+ variable alarm_triggered 0
+
+ # The eCos application process id. This is needed to send a SIGPWR signal
+ # if the watchdog triggers, and to access /proc//stat to obtain
+ # timing information. Strictly speaking _ppid is not exported by
+ # the I/O auxiliary.
+ if { ! [info exists synth::_ppid] } {
+ synth::report_error "Watchdog initialization failed, _ppid variable required"
+ return ""
+ }
+ variable ecos_pid $synth::_ppid
+
+ # Resolution, i.e. how long to go between checks. Currently this is hard-wired
+ # to one second, or 1000 ms. This may become configurable, either on the
+ # target-side via CDL or on the host-side via the target definition file.
+ # Note that currently the watchdog device and the GUI get updated via the
+ # same timer. If the resolution is changed to e.g. 10 seconds then it might
+ # be a good idea to update the GUI more frequently, although there are
+ # arguments for keeping the animation in step with the real work.
+ variable resolution 1000
+
+ # Options from the target definition file
+ variable use_wallclock 0
+ variable window_pack "-in .main.n -side right"
+ variable sound_file ""
+ variable sound_player "play"
+
+ if { [synth::tdf_has_device "watchdog"] } {
+ if { [synth::tdf_has_option "watchdog" "use"] } {
+ set _use [synth::tdf_get_option "watchdog" "use"]
+ if { "wallclock_time" == $_use } {
+ set watchdog::use_wallclock 1
+ } elseif { "consumed_cpu_time" == $_use } {
+ set watchdog::use_wallclock 0
+ } else {
+ synth::report_error "Invalid entry in target definition file $synth::target_definition\n\
+ \ Device watchdog, option \"use\" should be \"wallclock_time\" or \"consumed_cpu_time\"\n"
+ }
+ unset _use
+ }
+ if { [synth::tdf_has_option "watchdog" "watchdog_pack"] } {
+ set watchdog::window_pack [synth::tdf_get_option "watchdog" "watchdog_pack"]
+ # Too complicated to validate here, instead leave it to a catch statement
+ # when the window actually gets packed
+ }
+ if { [synth::tdf_has_option "watchdog" "sound"] } {
+ set _sound_file [synth::tdf_get_option "watchdog" "sound"]
+ # Look for this sound file in the install tree first, then absolute or relative
+ if { [file exists [file join $synth::device_install_dir $_sound_file] ] } {
+ set _sound_file [file join $synth::device_install_dir $_sound_file]
+ }
+ if { ![file exists $_sound_file] } {
+ synth::report_error "Invalid entry in target definition file $synth::target_definition\n\
+ \ Device watchdog, option \"sound\", failed to find $_sound_file\n"
+ } elseif { ! [file readable $_sound_file] } {
+ synth::report_error "Invalid entry in target definition file $synth::target_definition\n\
+ \ Device watchdog, option \"sound\", no read access to file $_sound_file\n"
+ } else {
+ set watchdog::sound_file $_sound_file
+ }
+ unset _sound_file
+ }
+ if { [synth::tdf_has_option "watchdog" "sound_player"] } {
+ set watchdog::sound_player [synth::tdf_get_option "watchdog" "sound_player"]
+ }
+ }
+
+ # There is no point in creating the watchdog window if any of the image files are missing
+ if { $synth::flag_gui } {
+ foreach _image [list "doghouse.gif" "alarm.gif" "eye.gif" "asleep.gif"] {
+ variable image_[file rootname $_image]
+ if { ! [synth::load_image "watchdog::image_[file rootname $_image]" [file join $synth::device_install_dir $_image]] } {
+ synth::report_error "Watchdog device, unable to load image $_image\n\
+ \ This file should have been installed in $synth::device_install_dir\n"
+ set watchdog::init_ok 0
+ }
+ }
+ }
+ if { $synth::flag_gui && $watchdog::init_ok } {
+ canvas .watchdog -width [image width $image_doghouse] -height [image height $image_doghouse] \
+ -borderwidth 0
+ variable background [.watchdog create image 0 0 -anchor nw -image $image_doghouse]
+
+ # Eye positions inside the doghouse. The eye is an 8x10 gif,
+ # mostly white but transparent around the corners
+ variable left_eye_x 48
+ variable left_eye_y 70
+ variable right_eye_x 58
+ variable right_eye_y 70
+
+ # Pupil positions relative to the eye. The pupils are 3x3 rectangles.
+ # The dog can look in one of nine different directions, with both eyes
+ # looking in the same direction (if visible)
+ variable pupil_positions { { 1 6 } { 1 5 } { 1 3 } { 3 1 } { 3 4 } { 3 6 } { 4 3 } { 4 5 } { 4 6 } }
+
+ # Which eyes are currently visible: none, left, right or both
+ variable eyes "none"
+ # What is the current pupil position?
+ variable pupils 4
+
+ variable left_eye [.watchdog create image $left_eye_x $left_eye_y -anchor nw -image $image_eye]
+ variable right_eye [.watchdog create image $right_eye_x $right_eye_y -anchor nw -image $image_eye]
+
+ variable left_pupil \
+ [.watchdog create rectangle \
+ [expr $left_eye_x + [lindex [lindex $pupil_positions $pupils] 0]] \
+ [expr $left_eye_y + [lindex [lindex $pupil_positions $pupils] 1]] \
+ [expr $left_eye_x + [lindex [lindex $pupil_positions $pupils] 0] + 2] \
+ [expr $left_eye_y + [lindex [lindex $pupil_positions $pupils] 1] + 2] \
+ -fill black]
+ variable right_pupil \
+ [.watchdog create rectangle \
+ [expr $right_eye_x + [lindex [lindex $pupil_positions $pupils] 0]] \
+ [expr $right_eye_y + [lindex [lindex $pupil_positions $pupils] 1]] \
+ [expr $right_eye_x + [lindex [lindex $pupil_positions $pupils] 0] + 2] \
+ [expr $right_eye_y + [lindex [lindex $pupil_positions $pupils] 1] + 2] \
+ -fill black]
+
+
+ # The dog is asleep until the eCos application activates the watchdog device
+ .watchdog lower $left_eye $background
+ .watchdog lower $right_eye $background
+ .watchdog lower $left_pupil $background
+ .watchdog lower $right_pupil $background
+
+ # Prepare for an alarm, but obviously the alarm picture should be hidden for now.
+ variable alarm [.watchdog create image 30 56 -anchor nw -image $image_alarm]
+ .watchdog lower $alarm $background
+
+ # Start asleep
+ variable asleep [.watchdog create image 48 70 -anchor nw -image $image_asleep]
+
+ # Now try to pack the watchdog window using the option provided by the
+ # user. If that fails, report the error and pack in a default window.
+ if { [catch { eval pack .watchdog $watchdog::window_pack } message] } {
+ synth::report_error "Watchdog device, failed to pack window in $watchdog::window_pack\n $message"
+ pack .watchdog -in .main.n -side right
+ }
+
+ # Updating the display. This happens once a second.
+ # If neither eye is visible, choose randomly between
+ # left-only, right-only or both. Otherwise there is
+ # a one in eight chance of blinking, probably switching
+ # to one of the other eye modes
+ #
+ # Also, the visible pupil(s) will move every second, to one
+ # of nine positions
+ proc gui_update { } {
+
+ if { "none" == $watchdog::eyes} {
+ set rand [expr int(3 * rand())]
+ if { 0 == $rand } {
+ set watchdog::eyes "left"
+ .watchdog raise $watchdog::left_eye $watchdog::background
+ .watchdog raise $watchdog::left_pupil $watchdog::left_eye
+ } elseif { 1 == $rand } {
+ set watchdog::eyes "right"
+ .watchdog raise $watchdog::right_eye $watchdog::background
+ .watchdog raise $watchdog::right_pupil $watchdog::right_eye
+ } else {
+ set watchdog::eyes "both"
+ .watchdog raise $watchdog::left_eye $watchdog::background
+ .watchdog raise $watchdog::left_pupil $watchdog::left_eye
+ .watchdog raise $watchdog::right_eye $watchdog::background
+ .watchdog raise $watchdog::right_pupil $watchdog::right_eye
+ }
+ } else {
+ if { 0 == [expr int(8 * rand())] } {
+ set watchdog::eyes "none"
+ .watchdog lower $watchdog::left_eye $watchdog::background
+ .watchdog lower $watchdog::right_eye $watchdog::background
+ .watchdog lower $watchdog::left_pupil $watchdog::background
+ .watchdog lower $watchdog::right_pupil $watchdog::background
+
+ # There is no point in moving the pupils if both eyes are shut
+ return
+ }
+ }
+
+ set watchdog::pupils [expr int(9 * rand())]
+ set new_pupil_x [lindex [lindex $watchdog::pupil_positions $watchdog::pupils] 0]
+ set new_pupil_y [lindex [lindex $watchdog::pupil_positions $watchdog::pupils] 1]
+
+ if { ("left" == $watchdog::eyes) || ("both" == $watchdog::eyes) } {
+ .watchdog coords $watchdog::left_pupil \
+ [expr $watchdog::left_eye_x + $new_pupil_x] \
+ [expr $watchdog::left_eye_y + $new_pupil_y] \
+ [expr $watchdog::left_eye_x + $new_pupil_x + 2] \
+ [expr $watchdog::left_eye_y + $new_pupil_y + 2]
+ }
+ if { ("right" == $watchdog::eyes) || ("both" == $watchdog::eyes) } {
+ .watchdog coords $watchdog::right_pupil \
+ [expr $watchdog::right_eye_x + $new_pupil_x] \
+ [expr $watchdog::right_eye_y + $new_pupil_y] \
+ [expr $watchdog::right_eye_x + $new_pupil_x + 2] \
+ [expr $watchdog::right_eye_y + $new_pupil_y + 2]
+ }
+ }
+
+ # Cancel the gui display when the eCos application has exited.
+ # The watchdog is allowed to go back to sleep. If the application
+ # exited because of the watchdog then of course the alarm picture
+ # should remain visible, otherwise it would be just a flash.
+ proc gui_cancel { } {
+ .watchdog lower $watchdog::left_eye $watchdog::background
+ .watchdog lower $watchdog::right_eye $watchdog::background
+ .watchdog lower $watchdog::left_pupil $watchdog::background
+ .watchdog lower $watchdog::right_pupil $watchdog::background
+ if { ! $watchdog::alarm_triggered } {
+ .watchdog raise $watchdog::asleep $watchdog::background
+ }
+ }
+
+ # Raise the alarm. This involves hiding the eyes and raising
+ # the alarm picture. If sound is enabled, the sound player
+ # should be invoked
+ proc gui_alarm { } {
+ .watchdog lower $watchdog::asleep $watchdog::background
+ .watchdog lower $watchdog::left_eye $watchdog::background
+ .watchdog lower $watchdog::right_eye $watchdog::background
+ .watchdog lower $watchdog::left_pupil $watchdog::background
+ .watchdog lower $watchdog::right_pupil $watchdog::background
+ .watchdog raise $watchdog::alarm $watchdog::background
+
+ if { "" != $watchdog::sound_file } {
+ # Catch errors on the actual exec, e.g. if the sound player is
+ # invalid, but play the sound in the background. If there are
+ # problems actually playing the sound then the user should
+ # still see a message on stderr. Blocking the entire auxiliary
+ # for a few seconds is not acceptable.
+ if { [catch { eval exec -- $watchdog::sound_player $watchdog::sound_file & } message] } {
+ synth::report_warning "Watchdog device, failed to play alarm sound file\n $message\n"
+ }
+ }
+ }
+
+ set _watchdog_help [file join $synth::device_src_dir "doc" "devs-watchdog-synth.html"]
+ if { ![file readable $_watchdog_help] } {
+ synth::report_warning "Failed to locate synthetic watchdog documentation $_watchdog_help\n\
+ \ Help->Watchdog target menu option disabled.\n"
+ set _watchdog_help ""
+ }
+ if { "" == $_watchdog_help } {
+ .menubar.help add command -label "Watchdog" -state disabled
+ } else {
+ .menubar.help add command -label "Watchdog" -command [list synth::handle_help "file://$_watchdog_help"]
+ }
+ }
+
+ # Now for the real work. By default the watchdog is asleep. The eCos
+ # application can activate it with a start message, which results
+ # in an "after" timer. That runs once a second to check whether or not
+ # the watchdog should trigger, and also updates the GUI.
+ #
+ # The target-side code should perform a watchdog reset at least once
+ # a second, which involves another message to this script and the
+ # setting of the reset_received flag.
+ #
+ # The update handler gets information about the eCos application using
+ # /proc//stat (see man 5 proc). The "state" field is important:
+ # a state of T indicates that the application is stopped, probably
+ # inside gdb, so cannot reset the watchdog. The other important field
+ # is utime, the total number of jiffies (0.01 seconds) executed in
+ # user space. The code maintains an open file handle to the /proc file.
+
+ variable reset_received 0
+ variable after_id ""
+ variable proc_stat ""
+ variable last_jiffies 0
+
+ set _filename "/proc/[set watchdog::ecos_pid]/stat"
+ if { [catch { open $_filename "r" } proc_stat ] } {
+ synth::report_error "Watchdog device, failed to open $_filename\n $proc_stat\n"
+ set watchdog::init_ok 0
+ }
+ unset _filename
+
+ proc update { } {
+ set watchdog::after_id [after $watchdog::resolution watchdog::update]
+ if { $synth::flag_gui } {
+ watchdog::gui_update
+ }
+ seek $watchdog::proc_stat 0 "start"
+ set line [gets $watchdog::proc_stat]
+ scan $line "%*d %*s %s %*d %*d %*d %*d %*d %*lu %*lu %*lu %*lu %*lu %lu" state jiffies
+
+ # In theory it is possible to examine the state field (the third argument).
+ # If set to T then that indicates the eCos application is traced or
+ # stopped, probably inside gdb, and it would make sense to act as if
+ # the application had sent a reset. Unfortunately the state also appears
+ # to be set to T if the application is blocked in a system call while
+ # being debugged - including the idle select(), making the test useless.
+ # FIXME: figure out how to distinguish between being blocked inside gdb
+ # and being in a system call.
+ #if { "T" == $state } {
+ # set watchdog::reset_received 1
+ # return
+ #}
+
+ # If there has been a recent reset the eCos application can continue to run for a bit longer.
+ if { $watchdog::reset_received } {
+ set watchdog::last_jiffies $jiffies
+ set watchdog::reset_received 0
+ return
+ }
+
+ # We have not received a reset. If the watchdog is using wallclock time then
+ # that is serious. If the watchdog is using elapsed cpu time then the eCos
+ # application may not actually have consumed a whole second of cpu time yet.
+ if { $watchdog::use_wallclock || (($jiffies - $watchdog::last_jiffies) > ($watchdog::resolution / 10)) } {
+ set watchdog::alarm_triggered 1
+ # Report the situation via the main text window
+ synth::report "Watchdog device: the eCos application has not sent a recent reset\n Raising SIGPWR signal.\n"
+ # Then kill off the eCos application
+ exec kill -PWR $watchdog::ecos_pid
+ # There is no point in another run of the timer
+ after cancel $watchdog::after_id
+ # And if the GUI is running, raise the alarm visually
+ if { $synth::flag_gui } {
+ watchdog::gui_alarm
+ }
+ }
+ }
+
+ # When the eCos application has exited, cancel the timer and
+ # clean-up the GUI. Also get rid of the open file since the
+ # /proc//stat file is no longer meaningful
+ proc exit_hook { arg_list } {
+ if { "" != $watchdog::after_id } {
+ after cancel $watchdog::after_id
+ }
+ if { $synth::flag_gui } {
+ watchdog::gui_cancel
+ }
+ close $watchdog::proc_stat
+ }
+ synth::hook_add "ecos_exit" watchdog::exit_hook
+
+ proc handle_request { id reqcode arg1 arg2 reqdata reqlen reply_len } {
+ if { 0x01 == $reqcode } {
+ # A "start" request. If the watchdog has already started,
+ # this request is a no-op. Otherwise a timer is enabled.
+ # This is made to run almost immediately, so that the
+ # GUI gets a quick update. Setting the reset_received flag
+ # ensures that the watchdog will not trigger immediately
+ set watchdog::reset_received 1
+ if { "" == $watchdog::after_id } {
+ set watchdog::after_id [after 1 watchdog::update]
+ }
+ if { $synth::flag_gui } {
+ .watchdog lower $watchdog::asleep $watchdog::background
+ }
+ } elseif { 0x02 == $reqcode } {
+ # A "reset" request. Just set a flag, the update handler
+ # will detect this next time it runs.
+ set watchdog::reset_received 1
+ }
+ }
+
+ proc instantiate { id name data } {
+ return watchdog::handle_request
+ }
+}
+
+if { $watchdog::init_ok } {
+ return watchdog::instantiate
+} else {
+ synth::report "Watchdog cannot be instantiated, initialization failed.\n"
+ return ""
+}
Index: host/doghouse.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: host/doghouse.gif
===================================================================
--- host/doghouse.gif (nonexistent)
+++ host/doghouse.gif (revision 174)
host/doghouse.gif
Property changes :
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: host/configure
===================================================================
--- host/configure (nonexistent)
+++ host/configure (revision 174)
@@ -0,0 +1,1171 @@
+#! /bin/sh
+
+# Guess values for system-dependent variables and create Makefiles.
+# Generated automatically using autoconf version 2.13
+# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+
+# Defaults:
+ac_help=
+ac_default_prefix=/usr/local
+# Any additions from configure.in:
+ac_help="$ac_help
+ --enable-maintainer-mode enable make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer"
+
+# Initialize some variables set by options.
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+build=NONE
+cache_file=./config.cache
+exec_prefix=NONE
+host=NONE
+no_create=
+nonopt=NONE
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+target=NONE
+verbose=
+x_includes=NONE
+x_libraries=NONE
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+# Initialize some other variables.
+subdirs=
+MFLAGS= MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+# Maximum number of lines to put in a shell here document.
+ac_max_here_lines=12
+
+ac_prev=
+for ac_option
+do
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval "$ac_prev=\$ac_option"
+ ac_prev=
+ continue
+ fi
+
+ case "$ac_option" in
+ -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+ *) ac_optarg= ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case "$ac_option" in
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir="$ac_optarg" ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build="$ac_optarg" ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file="$ac_optarg" ;;
+
+ -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+ | --da=*)
+ datadir="$ac_optarg" ;;
+
+ -disable-* | --disable-*)
+ ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
+ # Reject names that are not valid shell variable names.
+ if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
+ { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
+ fi
+ ac_feature=`echo $ac_feature| sed 's/-/_/g'`
+ eval "enable_${ac_feature}=no" ;;
+
+ -enable-* | --enable-*)
+ ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
+ # Reject names that are not valid shell variable names.
+ if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
+ { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
+ fi
+ ac_feature=`echo $ac_feature| sed 's/-/_/g'`
+ case "$ac_option" in
+ *=*) ;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "enable_${ac_feature}='$ac_optarg'" ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix="$ac_optarg" ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he)
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat << EOF
+Usage: configure [options] [host]
+Options: [defaults in brackets after descriptions]
+Configuration:
+ --cache-file=FILE cache test results in FILE
+ --help print this message
+ --no-create do not create output files
+ --quiet, --silent do not print \`checking...' messages
+ --version print the version of autoconf that created configure
+Directory and file names:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [same as prefix]
+ --bindir=DIR user executables in DIR [EPREFIX/bin]
+ --sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
+ --libexecdir=DIR program executables in DIR [EPREFIX/libexec]
+ --datadir=DIR read-only architecture-independent data in DIR
+ [PREFIX/share]
+ --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data in DIR
+ [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
+ --libdir=DIR object code libraries in DIR [EPREFIX/lib]
+ --includedir=DIR C header files in DIR [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
+ --infodir=DIR info documentation in DIR [PREFIX/info]
+ --mandir=DIR man documentation in DIR [PREFIX/man]
+ --srcdir=DIR find the sources in DIR [configure dir or ..]
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM
+ run sed PROGRAM on installed program names
+EOF
+ cat << EOF
+Host type:
+ --build=BUILD configure for building on BUILD [BUILD=HOST]
+ --host=HOST configure for HOST [guessed]
+ --target=TARGET configure for TARGET [TARGET=HOST]
+Features and packages:
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --x-includes=DIR X include files are in DIR
+ --x-libraries=DIR X library files are in DIR
+EOF
+ if test -n "$ac_help"; then
+ echo "--enable and --with options recognized:$ac_help"
+ fi
+ exit 0 ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host="$ac_optarg" ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir="$ac_optarg" ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir="$ac_optarg" ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir="$ac_optarg" ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir="$ac_optarg" ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst \
+ | --locals | --local | --loca | --loc | --lo)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+ localstatedir="$ac_optarg" ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir="$ac_optarg" ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir="$ac_optarg" ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix="$ac_optarg" ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix="$ac_optarg" ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix="$ac_optarg" ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name="$ac_optarg" ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir="$ac_optarg" ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir="$ac_optarg" ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site="$ac_optarg" ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir="$ac_optarg" ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir="$ac_optarg" ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target="$ac_optarg" ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers)
+ echo "configure generated by autoconf version 2.13"
+ exit 0 ;;
+
+ -with-* | --with-*)
+ ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
+ # Reject names that are not valid shell variable names.
+ if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
+ { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
+ fi
+ ac_package=`echo $ac_package| sed 's/-/_/g'`
+ case "$ac_option" in
+ *=*) ;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "with_${ac_package}='$ac_optarg'" ;;
+
+ -without-* | --without-*)
+ ac_package=`echo $ac_option|sed -e 's/-*without-//'`
+ # Reject names that are not valid shell variable names.
+ if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
+ { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
+ fi
+ ac_package=`echo $ac_package| sed 's/-/_/g'`
+ eval "with_${ac_package}=no" ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes="$ac_optarg" ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries="$ac_optarg" ;;
+
+ -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
+ ;;
+
+ *)
+ if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
+ echo "configure: warning: $ac_option: invalid host type" 1>&2
+ fi
+ if test "x$nonopt" != xNONE; then
+ { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
+ fi
+ nonopt="$ac_option"
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
+fi
+
+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+
+# File descriptor usage:
+# 0 standard input
+# 1 file creation
+# 2 errors and warnings
+# 3 some systems may open it to /dev/tty
+# 4 used on the Kubota Titan
+# 6 checking for... messages and results
+# 5 compiler messages saved in config.log
+if test "$silent" = yes; then
+ exec 6>/dev/null
+else
+ exec 6>&1
+fi
+exec 5>./config.log
+
+echo "\
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+" 1>&5
+
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Also quote any args containing shell metacharacters.
+ac_configure_args=
+for ac_arg
+do
+ case "$ac_arg" in
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c) ;;
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
+ ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+ *) ac_configure_args="$ac_configure_args $ac_arg" ;;
+ esac
+done
+
+# NLS nuisances.
+# Only set these to C if already set. These must not be set unconditionally
+# because not all systems understand e.g. LANG=C (notably SCO).
+# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
+# Non-C LC_CTYPE values break the ctype check.
+if test "${LANG+set}" = set; then LANG=C; export LANG; fi
+if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
+if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
+if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo > confdefs.h
+
+# A filename unique to this package, relative to the directory that
+# configure is in, which we can look for to find out if srcdir is correct.
+ac_unique_file=watchdog.tcl
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then its parent.
+ ac_prog=$0
+ ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
+ test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
+ srcdir=$ac_confdir
+ if test ! -r $srcdir/$ac_unique_file; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+ if test "$ac_srcdir_defaulted" = yes; then
+ { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
+ else
+ { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
+ fi
+fi
+srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
+
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+ if test "x$prefix" != xNONE; then
+ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+ else
+ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+ fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+ if test -r "$ac_site_file"; then
+ echo "loading site script $ac_site_file"
+ . "$ac_site_file"
+ fi
+done
+
+if test -r "$cache_file"; then
+ echo "loading cache $cache_file"
+ . $cache_file
+else
+ echo "creating cache $cache_file"
+ > $cache_file
+fi
+
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+ac_exeext=
+ac_objext=o
+if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
+ # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
+ if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
+ ac_n= ac_c='
+' ac_t=' '
+ else
+ ac_n=-n ac_c= ac_t=
+ fi
+else
+ ac_n= ac_c='\c' ac_t=
+fi
+
+
+
+ac_aux_dir=
+for ac_dir in ../../../../../../acsupport $srcdir/../../../../../../acsupport; do
+ if test -f $ac_dir/install-sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f $ac_dir/install.sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ { echo "configure: error: can not find install-sh or install.sh in ../../../../../../acsupport $srcdir/../../../../../../acsupport" 1>&2; exit 1; }
+fi
+ac_config_guess=$ac_aux_dir/config.guess
+ac_config_sub=$ac_aux_dir/config.sub
+ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
+
+
+
+ echo $ac_n "checking that a separate build tree is being used""... $ac_c" 1>&6
+echo "configure:551: checking that a separate build tree is being used" >&5
+ ecos_cwd=`/bin/pwd`
+ if test "${srcdir}" = "." ; then
+ srcdir=${ecos_cwd}
+ fi
+ if test "${ecos_cwd}" = "${srcdir}" ; then
+ echo "$ac_t""no" 1>&6
+ { echo "configure: error: This configure script should not be run inside the source tree. Instead please use a separate build tree" 1>&2; exit 1; }
+ else
+ echo "$ac_t""yes" 1>&6
+ fi
+
+
+# Make sure we can run config.sub.
+if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
+else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
+fi
+
+echo $ac_n "checking host system type""... $ac_c" 1>&6
+echo "configure:570: checking host system type" >&5
+
+host_alias=$host
+case "$host_alias" in
+NONE)
+ case $nonopt in
+ NONE)
+ if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then :
+ else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
+ fi ;;
+ *) host_alias=$nonopt ;;
+ esac ;;
+esac
+
+host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias`
+host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+echo "$ac_t""$host" 1>&6
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# ./install, which can be erroneously created by make from ./install.sh.
+echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
+echo "configure:602: checking for a BSD compatible install" >&5
+if test -z "$INSTALL"; then
+if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
+ for ac_dir in $PATH; do
+ # Account for people who put trailing slashes in PATH elements.
+ case "$ac_dir/" in
+ /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ if test -f $ac_dir/$ac_prog; then
+ if test $ac_prog = install &&
+ grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ else
+ ac_cv_path_install="$ac_dir/$ac_prog -c"
+ break 2
+ fi
+ fi
+ done
+ ;;
+ esac
+ done
+ IFS="$ac_save_IFS"
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL="$ac_cv_path_install"
+ else
+ # As a last resort, use the slow shell script. We don't cache a
+ # path for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the path is relative.
+ INSTALL="$ac_install_sh"
+ fi
+fi
+echo "$ac_t""$INSTALL" 1>&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6
+echo "configure:655: checking whether build environment is sane" >&5
+# Just in case
+sleep 1
+echo timestamp > conftestfile
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t $srcdir/configure conftestfile`
+ fi
+ if test "$*" != "X $srcdir/configure conftestfile" \
+ && test "$*" != "X conftestfile $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ { echo "configure: error: ls -t appears to fail. Make sure there is not a broken
+alias in your environment" 1>&2; exit 1; }
+ fi
+
+ test "$2" = conftestfile
+ )
+then
+ # Ok.
+ :
+else
+ { echo "configure: error: newly created file is older than distributed files!
+Check your system clock" 1>&2; exit 1; }
+fi
+rm -f conftest*
+echo "$ac_t""yes" 1>&6
+if test "$program_transform_name" = s,x,x,; then
+ program_transform_name=
+else
+ # Double any \ or $. echo might interpret backslashes.
+ cat <<\EOF_SED > conftestsed
+s,\\,\\\\,g; s,\$,$$,g
+EOF_SED
+ program_transform_name="`echo $program_transform_name|sed -f conftestsed`"
+ rm -f conftestsed
+fi
+test "$program_prefix" != NONE &&
+ program_transform_name="s,^,${program_prefix},; $program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s,\$\$,${program_suffix},; $program_transform_name"
+
+# sed with no file args requires a program.
+test "$program_transform_name" = "" && program_transform_name="s,x,x,"
+
+echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
+echo "configure:712: checking whether ${MAKE-make} sets \${MAKE}" >&5
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftestmake <<\EOF
+all:
+ @echo 'ac_maketemp="${MAKE}"'
+EOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+ eval ac_cv_prog_make_${ac_make}_set=yes
+else
+ eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftestmake
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ SET_MAKE=
+else
+ echo "$ac_t""no" 1>&6
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+
+PACKAGE=eCos_synthetic_target_watchdog
+
+VERSION=0.1
+
+if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
+ { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; }
+fi
+
+
+
+missing_dir=`cd $ac_aux_dir && pwd`
+echo $ac_n "checking for working aclocal""... $ac_c" 1>&6
+echo "configure:751: checking for working aclocal" >&5
+# Run test in a subshell; some versions of sh will print an error if
+# an executable is not found, even if stderr is redirected.
+# Redirect stdin to placate older versions of autoconf. Sigh.
+if (aclocal --version) < /dev/null > /dev/null 2>&1; then
+ ACLOCAL=aclocal
+ echo "$ac_t""found" 1>&6
+else
+ ACLOCAL="$missing_dir/missing aclocal"
+ echo "$ac_t""missing" 1>&6
+fi
+
+echo $ac_n "checking for working autoconf""... $ac_c" 1>&6
+echo "configure:764: checking for working autoconf" >&5
+# Run test in a subshell; some versions of sh will print an error if
+# an executable is not found, even if stderr is redirected.
+# Redirect stdin to placate older versions of autoconf. Sigh.
+if (autoconf --version) < /dev/null > /dev/null 2>&1; then
+ AUTOCONF=autoconf
+ echo "$ac_t""found" 1>&6
+else
+ AUTOCONF="$missing_dir/missing autoconf"
+ echo "$ac_t""missing" 1>&6
+fi
+
+echo $ac_n "checking for working automake""... $ac_c" 1>&6
+echo "configure:777: checking for working automake" >&5
+# Run test in a subshell; some versions of sh will print an error if
+# an executable is not found, even if stderr is redirected.
+# Redirect stdin to placate older versions of autoconf. Sigh.
+if (automake --version) < /dev/null > /dev/null 2>&1; then
+ AUTOMAKE=automake
+ echo "$ac_t""found" 1>&6
+else
+ AUTOMAKE="$missing_dir/missing automake"
+ echo "$ac_t""missing" 1>&6
+fi
+
+echo $ac_n "checking for working autoheader""... $ac_c" 1>&6
+echo "configure:790: checking for working autoheader" >&5
+# Run test in a subshell; some versions of sh will print an error if
+# an executable is not found, even if stderr is redirected.
+# Redirect stdin to placate older versions of autoconf. Sigh.
+if (autoheader --version) < /dev/null > /dev/null 2>&1; then
+ AUTOHEADER=autoheader
+ echo "$ac_t""found" 1>&6
+else
+ AUTOHEADER="$missing_dir/missing autoheader"
+ echo "$ac_t""missing" 1>&6
+fi
+
+echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6
+echo "configure:803: checking for working makeinfo" >&5
+# Run test in a subshell; some versions of sh will print an error if
+# an executable is not found, even if stderr is redirected.
+# Redirect stdin to placate older versions of autoconf. Sigh.
+if (makeinfo --version) < /dev/null > /dev/null 2>&1; then
+ MAKEINFO=makeinfo
+ echo "$ac_t""found" 1>&6
+else
+ MAKEINFO="$missing_dir/missing makeinfo"
+ echo "$ac_t""missing" 1>&6
+fi
+
+
+echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
+echo "configure:817: checking whether to enable maintainer-specific portions of Makefiles" >&5
+ # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then
+ enableval="$enable_maintainer_mode"
+ USE_MAINTAINER_MODE=$enableval
+else
+ USE_MAINTAINER_MODE=no
+fi
+
+ echo "$ac_t""$USE_MAINTAINER_MODE" 1>&6
+
+
+if test $USE_MAINTAINER_MODE = yes; then
+ MAINTAINER_MODE_TRUE=
+ MAINTAINER_MODE_FALSE='#'
+else
+ MAINTAINER_MODE_TRUE='#'
+ MAINTAINER_MODE_FALSE=
+fi
+ MAINT=$MAINTAINER_MODE_TRUE
+
+
+
+case "${host}" in
+ i[34567]86-*-linux-gnu* ) SUPPORTED="yes";;
+ * ) SUPPORTED="no"
+esac
+
+
+if test "${SUPPORTED}" = "yes"; then
+ SUPPORTED_TRUE=
+ SUPPORTED_FALSE='#'
+else
+ SUPPORTED_TRUE='#'
+ SUPPORTED_FALSE=
+fi
+
+if test "${SUPPORTED}" = "yes" ; then
+
+
+ package_dir=`cd ${srcdir} && /bin/pwd`
+ PACKAGE_VERSION=`dirname ${package_dir}`
+ PACKAGE_VERSION=`basename ${PACKAGE_VERSION}`
+
+ package_dir=`dirname ${package_dir}`
+ package_dir=`dirname ${package_dir}`
+
+ possibles="${package_dir}/.. ${package_dir}/../.. ${package_dir}/../../.. ${package_dir}/../../../.."
+ possibles="${possibles} ${package_dir}/../../../../.. ${package_dir}/../../../../../.."
+
+ repository_root=""
+ for i in ${possibles}; do
+ if test -d "$i/"acsupport""; then
+ repository_root=$i
+ break
+ fi
+ done
+
+ if test "${repository_root}" = "" ; then
+ { echo "configure: error: Failed to identify this package's position within the eCos repository" 1>&2; exit 1; }
+ fi
+ ECOS_REPOSITORY=`cd "${repository_root}/packages/pkgconf/.." && /bin/pwd`
+
+ PACKAGE_DIR=`echo ${package_dir} | sed -e "s:${ECOS_REPOSITORY}/::"`
+
+ PACKAGE_INSTALL="${PACKAGE_DIR}/${PACKAGE_VERSION}"
+
+
+
+
+
+
+fi
+
+trap '' 1 2 15
+cat > confcache <<\EOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs. It is not useful on other systems.
+# If it contains results you don't want to keep, you may remove or edit it.
+#
+# By default, configure uses ./config.cache as the cache file,
+# creating it if it does not exist already. You can give configure
+# the --cache-file=FILE option to use a different cache file; that is
+# what configure does when it calls configure scripts in
+# subdirectories, so they share the cache.
+# Giving --cache-file=/dev/null disables caching, for debugging configure.
+# config.status only pays attention to the cache file if you give it the
+# --recheck option to rerun configure.
+#
+EOF
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(set) 2>&1 |
+ case `(ac_space=' '; set | grep ac_space) 2>&1` in
+ *ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote substitution
+ # turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ -e "s/'/'\\\\''/g" \
+ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
+ ;;
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
+ ;;
+ esac >> confcache
+if cmp -s $cache_file confcache; then
+ :
+else
+ if test -w $cache_file; then
+ echo "updating cache $cache_file"
+ cat confcache > $cache_file
+ else
+ echo "not updating unwritable cache $cache_file"
+ fi
+fi
+rm -f confcache
+
+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Any assignment to VPATH causes Sun make to only execute
+# the first set of double-colon rules, so remove it if not needed.
+# If there is a colon in the path, we need to keep it.
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
+fi
+
+trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+cat > conftest.defs <<\EOF
+s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g
+s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g
+s%\[%\\&%g
+s%\]%\\&%g
+s%\$%$$%g
+EOF
+DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
+rm -f conftest.defs
+
+
+# Without the "./", some shells look in PATH for config.status.
+: ${CONFIG_STATUS=./config.status}
+
+echo creating $CONFIG_STATUS
+rm -f $CONFIG_STATUS
+cat > $CONFIG_STATUS </dev/null | sed 1q`:
+#
+# $0 $ac_configure_args
+#
+# Compiler output produced by configure, useful for debugging
+# configure, is in ./config.log if it exists.
+
+ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
+for ac_option
+do
+ case "\$ac_option" in
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
+ exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
+ -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
+ echo "$CONFIG_STATUS generated by autoconf version 2.13"
+ exit 0 ;;
+ -help | --help | --hel | --he | --h)
+ echo "\$ac_cs_usage"; exit 0 ;;
+ *) echo "\$ac_cs_usage"; exit 1 ;;
+ esac
+done
+
+ac_given_srcdir=$srcdir
+ac_given_INSTALL="$INSTALL"
+
+trap 'rm -fr `echo "Makefile:Makefile.in" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+EOF
+cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF
+$ac_vpsub
+$extrasub
+s%@SHELL@%$SHELL%g
+s%@CFLAGS@%$CFLAGS%g
+s%@CPPFLAGS@%$CPPFLAGS%g
+s%@CXXFLAGS@%$CXXFLAGS%g
+s%@FFLAGS@%$FFLAGS%g
+s%@DEFS@%$DEFS%g
+s%@LDFLAGS@%$LDFLAGS%g
+s%@LIBS@%$LIBS%g
+s%@exec_prefix@%$exec_prefix%g
+s%@prefix@%$prefix%g
+s%@program_transform_name@%$program_transform_name%g
+s%@bindir@%$bindir%g
+s%@sbindir@%$sbindir%g
+s%@libexecdir@%$libexecdir%g
+s%@datadir@%$datadir%g
+s%@sysconfdir@%$sysconfdir%g
+s%@sharedstatedir@%$sharedstatedir%g
+s%@localstatedir@%$localstatedir%g
+s%@libdir@%$libdir%g
+s%@includedir@%$includedir%g
+s%@oldincludedir@%$oldincludedir%g
+s%@infodir@%$infodir%g
+s%@mandir@%$mandir%g
+s%@host@%$host%g
+s%@host_alias@%$host_alias%g
+s%@host_cpu@%$host_cpu%g
+s%@host_vendor@%$host_vendor%g
+s%@host_os@%$host_os%g
+s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
+s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
+s%@INSTALL_DATA@%$INSTALL_DATA%g
+s%@PACKAGE@%$PACKAGE%g
+s%@VERSION@%$VERSION%g
+s%@ACLOCAL@%$ACLOCAL%g
+s%@AUTOCONF@%$AUTOCONF%g
+s%@AUTOMAKE@%$AUTOMAKE%g
+s%@AUTOHEADER@%$AUTOHEADER%g
+s%@MAKEINFO@%$MAKEINFO%g
+s%@SET_MAKE@%$SET_MAKE%g
+s%@MAINTAINER_MODE_TRUE@%$MAINTAINER_MODE_TRUE%g
+s%@MAINTAINER_MODE_FALSE@%$MAINTAINER_MODE_FALSE%g
+s%@MAINT@%$MAINT%g
+s%@SUPPORTED_TRUE@%$SUPPORTED_TRUE%g
+s%@SUPPORTED_FALSE@%$SUPPORTED_FALSE%g
+s%@ECOS_REPOSITORY@%$ECOS_REPOSITORY%g
+s%@PACKAGE_DIR@%$PACKAGE_DIR%g
+s%@PACKAGE_VERSION@%$PACKAGE_VERSION%g
+s%@PACKAGE_INSTALL@%$PACKAGE_INSTALL%g
+
+CEOF
+EOF
+
+cat >> $CONFIG_STATUS <<\EOF
+
+# Split the substitutions into bite-sized pieces for seds with
+# small command number limits, like on Digital OSF/1 and HP-UX.
+ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
+ac_file=1 # Number of current file.
+ac_beg=1 # First line for current file.
+ac_end=$ac_max_sed_cmds # Line after last line for current file.
+ac_more_lines=:
+ac_sed_cmds=""
+while $ac_more_lines; do
+ if test $ac_beg -gt 1; then
+ sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
+ else
+ sed "${ac_end}q" conftest.subs > conftest.s$ac_file
+ fi
+ if test ! -s conftest.s$ac_file; then
+ ac_more_lines=false
+ rm -f conftest.s$ac_file
+ else
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds="sed -f conftest.s$ac_file"
+ else
+ ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
+ fi
+ ac_file=`expr $ac_file + 1`
+ ac_beg=$ac_end
+ ac_end=`expr $ac_end + $ac_max_sed_cmds`
+ fi
+done
+if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds=cat
+fi
+EOF
+
+cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF
+for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case "$ac_file" in
+ *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
+ ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+ *) ac_file_in="${ac_file}.in" ;;
+ esac
+
+ # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
+
+ # Remove last slash and all that follows it. Not all systems have dirname.
+ ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+ if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+ # The file is in a subdirectory.
+ test ! -d "$ac_dir" && mkdir "$ac_dir"
+ ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
+ else
+ ac_dir_suffix= ac_dots=
+ fi
+
+ case "$ac_given_srcdir" in
+ .) srcdir=.
+ if test -z "$ac_dots"; then top_srcdir=.
+ else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
+ /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
+ *) # Relative path.
+ srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
+ top_srcdir="$ac_dots$ac_given_srcdir" ;;
+ esac
+
+ case "$ac_given_INSTALL" in
+ [/$]*) INSTALL="$ac_given_INSTALL" ;;
+ *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
+ esac
+
+ echo creating "$ac_file"
+ rm -f "$ac_file"
+ configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
+ case "$ac_file" in
+ *Makefile*) ac_comsub="1i\\
+# $configure_input" ;;
+ *) ac_comsub= ;;
+ esac
+
+ ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
+ sed -e "$ac_comsub
+s%@configure_input@%$configure_input%g
+s%@srcdir@%$srcdir%g
+s%@top_srcdir@%$top_srcdir%g
+s%@INSTALL@%$INSTALL%g
+" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
+fi; done
+rm -f conftest.s*
+
+EOF
+cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF
+
+exit 0
+EOF
+chmod +x $CONFIG_STATUS
+rm -fr confdefs* $ac_clean_files
+test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
+
Index: host/Makefile.in
===================================================================
--- host/Makefile.in (nonexistent)
+++ host/Makefile.in (revision 174)
@@ -0,0 +1,289 @@
+# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
+
+# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+######COPYRIGHTBEGIN####
+#
+# ----------------------------------------------------------------------------
+# Copyright (C) 2002 Bart Veer
+#
+# This file is part of the eCos synthetic target ethernet support.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2 of the License, 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 General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# ----------------------------------------------------------------------------
+#
+######COPYRIGHTEND####
+#######DESCRIPTIONBEGIN####
+######DESCRIPTIONEND####
+
+
+SHELL = @SHELL@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+
+bindir = @bindir@
+sbindir = @sbindir@
+libexecdir = @libexecdir@
+datadir = @datadir@
+sysconfdir = @sysconfdir@
+sharedstatedir = @sharedstatedir@
+localstatedir = @localstatedir@
+libdir = @libdir@
+infodir = @infodir@
+mandir = @mandir@
+includedir = @includedir@
+oldincludedir = /usr/include
+
+DESTDIR =
+
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+
+top_builddir = .
+
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOMAKE = @AUTOMAKE@
+AUTOHEADER = @AUTOHEADER@
+
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+transform = @program_transform_name@
+
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_alias = @host_alias@
+host_triplet = @host@
+CC = @CC@
+CXX = @CXX@
+ECOS_REPOSITORY = @ECOS_REPOSITORY@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MSVC_SRCDIR = @MSVC_SRCDIR@
+PACKAGE = @PACKAGE@
+PACKAGE_DIR = @PACKAGE_DIR@
+PACKAGE_INSTALL = @PACKAGE_INSTALL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+VERSION = @VERSION@
+ecos_CFLAGS = @ecos_CFLAGS@
+ecos_CXXFLAGS = @ecos_CXXFLAGS@
+ecos_INCLUDES = @ecos_INCLUDES@
+ecos_LDADD = @ecos_LDADD@
+ecos_LIBS = @ecos_LIBS@
+ecos_infra_incdir = @ecos_infra_incdir@
+ecos_infra_libdir = @ecos_infra_libdir@
+ecos_libcdl_incdir = @ecos_libcdl_incdir@
+ecos_libcdl_libdir = @ecos_libcdl_libdir@
+ecos_tk_includes = @ecos_tk_includes@
+ecos_tk_libs = @ecos_tk_libs@
+
+AUTOMAKE_OPTIONS = 1.3 foreign
+
+@SUPPORTED_TRUE@watchdogdir = @SUPPORTED_TRUE@$(libexecdir)/ecos/@PACKAGE_INSTALL@
+@SUPPORTED_TRUE@watchdog_DATA = @SUPPORTED_TRUE@watchdog.tcl \
+@SUPPORTED_TRUE@ watchdog.tdf \
+@SUPPORTED_TRUE@ alarm.gif doghouse.gif eye.gif asleep.gif \
+@SUPPORTED_TRUE@ sound1.au sound2.au
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/../../../../../../acsupport/mkinstalldirs
+CONFIG_CLEAN_FILES =
+DATA = $(watchdog_DATA)
+
+DIST_COMMON = Makefile.am Makefile.in acinclude.m4 aclocal.m4 configure \
+configure.in
+
+
+DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
+
+TAR = gtar
+GZIP_ENV = --best
+all: all-redirect
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+ cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
+ cd $(top_builddir) \
+ && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in acinclude.m4
+ cd $(srcdir) && $(ACLOCAL)
+
+config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+$(srcdir)/configure: @MAINTAINER_MODE_TRUE@$(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
+ cd $(srcdir) && $(AUTOCONF)
+
+install-watchdogDATA: $(watchdog_DATA)
+ @$(NORMAL_INSTALL)
+ $(mkinstalldirs) $(DESTDIR)$(watchdogdir)
+ @list='$(watchdog_DATA)'; for p in $$list; do \
+ if test -f $(srcdir)/$$p; then \
+ echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(watchdogdir)/$$p"; \
+ $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(watchdogdir)/$$p; \
+ else if test -f $$p; then \
+ echo " $(INSTALL_DATA) $$p $(DESTDIR)$(watchdogdir)/$$p"; \
+ $(INSTALL_DATA) $$p $(DESTDIR)$(watchdogdir)/$$p; \
+ fi; fi; \
+ done
+
+uninstall-watchdogDATA:
+ @$(NORMAL_UNINSTALL)
+ list='$(watchdog_DATA)'; for p in $$list; do \
+ rm -f $(DESTDIR)$(watchdogdir)/$$p; \
+ done
+tags: TAGS
+TAGS:
+
+
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ -rm -rf $(distdir)
+ GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz
+ mkdir $(distdir)/=build
+ mkdir $(distdir)/=inst
+ dc_install_base=`cd $(distdir)/=inst && pwd`; \
+ cd $(distdir)/=build \
+ && ../configure --srcdir=.. --prefix=$$dc_install_base \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) dist
+ -rm -rf $(distdir)
+ @banner="$(distdir).tar.gz is ready for distribution"; \
+ dashes=`echo "$$banner" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ echo "$$dashes"
+dist: distdir
+ -chmod -R a+r $(distdir)
+ GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
+ -rm -rf $(distdir)
+dist-all: distdir
+ -chmod -R a+r $(distdir)
+ GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
+ -rm -rf $(distdir)
+distdir: $(DISTFILES)
+ -rm -rf $(distdir)
+ mkdir $(distdir)
+ -chmod 777 $(distdir)
+ here=`cd $(top_builddir) && pwd`; \
+ top_distdir=`cd $(distdir) && pwd`; \
+ distdir=`cd $(distdir) && pwd`; \
+ cd $(top_srcdir) \
+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --foreign Makefile
+ @for file in $(DISTFILES); do \
+ d=$(srcdir); \
+ if test -d $$d/$$file; then \
+ cp -pr $$d/$$file $(distdir)/$$file; \
+ else \
+ test -f $(distdir)/$$file \
+ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+ || cp -p $$d/$$file $(distdir)/$$file || :; \
+ fi; \
+ done
+info-am:
+info: info-am
+dvi-am:
+dvi: dvi-am
+check-am: all-am
+check: check-am
+installcheck-am:
+installcheck: installcheck-am
+install-exec-am:
+install-exec: install-exec-am
+
+install-data-am: install-watchdogDATA
+install-data: install-data-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+install: install-am
+uninstall-am: uninstall-watchdogDATA
+uninstall: uninstall-am
+all-am: Makefile $(DATA)
+all-redirect: all-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
+installdirs:
+ $(mkinstalldirs) $(DESTDIR)$(watchdogdir)
+
+
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -rm -f Makefile $(CONFIG_CLEAN_FILES)
+ -rm -f config.cache config.log stamp-h stamp-h[0-9]*
+
+maintainer-clean-generic:
+mostlyclean-am: mostlyclean-generic
+
+mostlyclean: mostlyclean-am
+
+clean-am: clean-generic mostlyclean-am
+
+clean: clean-am
+
+distclean-am: distclean-generic clean-am
+
+distclean: distclean-am
+ -rm -f config.status
+
+maintainer-clean-am: 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."
+
+maintainer-clean: maintainer-clean-am
+ -rm -f config.status
+
+.PHONY: uninstall-watchdogDATA install-watchdogDATA tags distdir info-am \
+info dvi-am dvi check check-am installcheck-am installcheck \
+install-exec-am install-exec install-data-am install-data install-am \
+install uninstall-am uninstall all-redirect all-am all installdirs \
+mostlyclean-generic distclean-generic clean-generic \
+maintainer-clean-generic clean mostlyclean distclean maintainer-clean
+
+
+# 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.
+.NOEXPORT:
Index: host/eye.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: host/eye.gif
===================================================================
--- host/eye.gif (nonexistent)
+++ host/eye.gif (revision 174)
host/eye.gif
Property changes :
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: host/acinclude.m4
===================================================================
--- host/acinclude.m4 (nonexistent)
+++ host/acinclude.m4 (revision 174)
@@ -0,0 +1,45 @@
+dnl Process this file with aclocal to get an aclocal.m4 file. Then
+dnl process that with autoconf.
+dnl ====================================================================
+dnl
+dnl acinclude.m4
+dnl
+dnl ====================================================================
+dnl####COPYRIGHTBEGIN####
+dnl
+dnl ----------------------------------------------------------------------------
+dnl Copyright (C) 2002 Bart Veer
+dnl
+dnl This file is part of the eCos host tools.
+dnl
+dnl This program is free software; you can redistribute it and/or modify it
+dnl under the terms of the GNU General Public License as published by the Free
+dnl Software Foundation; either version 2 of the License, or (at your option)
+dnl any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful, but WITHOUT
+dnl ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+dnl FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+dnl more details.
+dnl
+dnl You should have received a copy of the GNU General Public License along with
+dnl this program; if not, write to the Free Software Foundation, Inc.,
+dnl 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+dnl ----------------------------------------------------------------------------
+dnl
+dnl####COPYRIGHTEND####
+dnl ====================================================================
+dnl#####DESCRIPTIONBEGIN####
+dnl
+dnl Author(s): bartv
+dnl Contact(s): bartv
+dnl Date: 2002/09/04
+dnl Version: 0.01
+dnl
+dnl####DESCRIPTIONEND####
+dnl ====================================================================
+
+dnl Access shared macros.
+dnl AM_CONDITIONAL needs to be mentioned here or else aclocal does not
+dnl incorporate the macro into aclocal.m4
+sinclude(../../../../../../acsupport/acinclude.m4)
Index: host/configure.in
===================================================================
--- host/configure.in (nonexistent)
+++ host/configure.in (revision 174)
@@ -0,0 +1,73 @@
+dnl Process this file with autoconf to produce a configure script.
+dnl ====================================================================
+dnl
+dnl configure.in
+dnl
+dnl configure script for eCos synthetic target watchdog
+dnl host-side support
+dnl
+dnl ====================================================================
+dnl####COPYRIGHTBEGIN####
+dnl
+dnl ----------------------------------------------------------------------------
+dnl Copyright (C) 2002 Bart Veer
+dnl
+dnl This file is part of the eCos synthetic target support.
+dnl
+dnl This program is free software; you can redistribute it and/or modify it
+dnl under the terms of the GNU General Public License as published by the Free
+dnl Software Foundation; either version 2 of the License, or (at your option)
+dnl any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful, but WITHOUT
+dnl ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+dnl FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+dnl more details.
+dnl
+dnl You should have received a copy of the GNU General Public License along with
+dnl this program; if not, write to the Free Software Foundation, Inc.,
+dnl 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+dnl ----------------------------------------------------------------------------
+dnl
+dnl####COPYRIGHTEND####
+dnl ====================================================================
+dnl#####DESCRIPTIONBEGIN####
+dnl
+dnl Author(s): bartv
+dnl Contact(s): bartv
+dnl Date: 2002/09/04
+dnl Version: 0.01
+dnl
+dnl####DESCRIPTIONEND####
+dnl ====================================================================
+
+
+AC_INIT(watchdog.tcl)
+
+dnl Pick up the support files from the top-level acsupport directory.
+AC_CONFIG_AUX_DIR(../../../../../../acsupport)
+
+ECOS_CHECK_BUILD_ne_SRC
+AC_CANONICAL_HOST
+AM_INIT_AUTOMAKE(eCos_synthetic_target_watchdog,0.1,0)
+AM_MAINTAINER_MODE
+
+dnl The current version of the synthetic target is implemented only for
+dnl x86 Linux platforms, so a test is appropriate here. However
+dnl it is not a good idea for the configure script to report an error:
+dnl that would prevent any top-level configury working for other
+dnl platforms. Instead an automake conditional is used to suppress adding
+dnl targets to the build.
+case "${host}" in
+ i[[34567]]86-*-linux-gnu* ) SUPPORTED="yes";;
+ * ) SUPPORTED="no"
+esac
+AM_CONDITIONAL(SUPPORTED, test "${SUPPORTED}" = "yes")
+
+dnl The watchdog host-side support only involves a Tcl
+dnl script and data files, so nothing needs to be compiled
+if test "${SUPPORTED}" = "yes" ; then
+ ECOS_PACKAGE_DIRS
+fi
+
+AC_OUTPUT(Makefile:Makefile.in)
Index: host/Makefile.am
===================================================================
--- host/Makefile.am (nonexistent)
+++ host/Makefile.am (revision 174)
@@ -0,0 +1,61 @@
+## Process this file with automake to produce Makefile.in
+## =====================================================================
+##
+## Makefile.am
+##
+## Build support for the host-side synthetic target support,
+## the watchdog package
+##
+## =====================================================================
+######COPYRIGHTBEGIN####
+#
+# ----------------------------------------------------------------------------
+# Copyright (C) 2002 Bart Veer
+#
+# This file is part of the eCos synthetic target ethernet support.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2 of the License, 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 General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# ----------------------------------------------------------------------------
+#
+######COPYRIGHTEND####
+## =====================================================================
+#######DESCRIPTIONBEGIN####
+##
+## Author(s): bartv
+## Contact(s): bartv
+## Date: 2002/09/04
+## Version: 0.01
+##
+######DESCRIPTIONEND####
+## =====================================================================
+
+AUTOMAKE_OPTIONS = 1.3 foreign
+
+## Only some platforms are supported. Having the configure script throw
+## an error when attempting to configure on an unsupported platform
+## would be a mistake, since that would prevent any configury from
+## the toplevel on unsupported platforms. Instead an automake conditional
+## is used, leading to null makefiles on unsupported platforms.
+
+if SUPPORTED
+
+## The only thing that needs to be installed is a Tcl script and some
+## data files.
+watchdogdir = $(libexecdir)/ecos/@PACKAGE_INSTALL@
+watchdog_DATA = watchdog.tcl \
+ watchdog.tdf \
+ alarm.gif doghouse.gif eye.gif asleep.gif \
+ sound1.au sound2.au
+endif
Index: host/watchdog.tdf
===================================================================
--- host/watchdog.tdf (nonexistent)
+++ host/watchdog.tdf (revision 174)
@@ -0,0 +1,63 @@
+synth_device watchdog {
+
+ ## How should the watchdog device decide that the watchdog has
+ ## triggered, assuming the eCos application has failed to
+ ## reset the device in time. There are two options: wallclock
+ ## time, where the watchdog will trigger after a second
+ ## irrespective of what the eCos application has been doing;
+ ## or consumed cpu time, where the watchdog will only trigger
+ ## if the eCos application has actually run for a whole second.
+ ##
+ ## Using wallclock time matches most real hardware,
+ ## but can give spurious results if there are other processes
+ ## running and consuming cpu cycles. Also, if the user has
+ ## halted the application in gdb then the watchdog will trigger
+ ## even though the application has no chance to reset the
+ ## watchdog.
+ ##
+ ## Using consumed cpu cycles avoids these problems.
+ ## However the default implementation of the idle thread action
+ ## is to block in a select() system call, so if the eCos
+ ## application spends most of its time idling but not resetting
+ ## the watchdog then the device will not trigger. The
+ ## configuration option CYGIMP_HAL_IDLE_THREAD_SPIN can be used
+ ## to change the synthetic target HAL's implementation of the
+ ## idle thread action.
+ ##
+ ## The default is to use consumed_cpu_time. Wallclock time can
+ ## be selected by uncommenting the next line.
+ # use wallclock_time
+ # use consumed_cpu_time
+
+ ## When running in GUI mode there will be a small window showing
+ ## the current state of the watchdog: asleep, watching, or giving
+ ## the alarm. This window can be packed as desired, using one
+ ## of the container frames .main.nw .main.n .main.ne .main.w
+ ## .main.e .main.sw .main.s or .main.se, and with a position of
+ ## left, right, top or bottom. The default is to pack inside the
+ ## .main.n frame, on the right, thus causing the watchdog to
+ ## appear above the central text window.
+ # watchdog_pack -in .main.n -side right
+
+ ## If running in GUI mode, when the watchdog triggers and resets
+ ## the eCos application this will be shown in the display.
+ ## Optionally the watchdog device can also give an audible alert
+ ## when this happens. This is disabled by default to avoid
+ ## annoying co-workers, but can be enabled by specifying a suitable
+ ## sound file. Two such files, sound1.au and sound2.au, are supplied
+ ## with the watchdog device itself. Alternatively the user can
+ ## specify a different sound file using a suitable path
+ # sound sound1.au
+ # sound sound2.au
+ # sound ~/sounds/my_watchdog_alert.au
+
+ ## If sound is enabled then the watchdog device needs some way to
+ ## access the host's sound hardware. Rather than accessing
+ ## /dev/audio or /dev/dsp directly the watchdog.tcl script will
+ ## run an external program. This can avoid complications with
+ ## different sound file formats etc. The default program is
+ ## "play", a front-end to the sox utility, but a different
+ ## program or script can be specified if desired. It will be run
+ ## simply as " &"
+ # sound_player play
+}
Index: host/sound1.au
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: host/sound1.au
===================================================================
--- host/sound1.au (nonexistent)
+++ host/sound1.au (revision 174)
host/sound1.au
Property changes :
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: host/aclocal.m4
===================================================================
--- host/aclocal.m4 (nonexistent)
+++ host/aclocal.m4 (revision 174)
@@ -0,0 +1,183 @@
+dnl aclocal.m4 generated automatically by aclocal 1.4-p5
+
+dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl This program is distributed in the hope that it will be useful,
+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 Process this file with aclocal to get an aclocal.m4 file. Then
+dnl process that with autoconf.
+dnl ====================================================================
+dnl
+dnl acinclude.m4
+dnl
+dnl ====================================================================
+dnl####COPYRIGHTBEGIN####
+dnl
+dnl ----------------------------------------------------------------------------
+dnl Copyright (C) 2002 Bart Veer
+dnl
+dnl This file is part of the eCos host tools.
+dnl
+dnl This program is free software; you can redistribute it and/or modify it
+dnl under the terms of the GNU General Public License as published by the Free
+dnl Software Foundation; either version 2 of the License, or (at your option)
+dnl any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful, but WITHOUT
+dnl ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+dnl FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+dnl more details.
+dnl
+dnl You should have received a copy of the GNU General Public License along with
+dnl this program; if not, write to the Free Software Foundation, Inc.,
+dnl 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+dnl ----------------------------------------------------------------------------
+dnl
+dnl####COPYRIGHTEND####
+dnl ====================================================================
+dnl#####DESCRIPTIONBEGIN####
+dnl
+dnl Author(s): bartv
+dnl Contact(s): bartv
+dnl Date: 2002/09/04
+dnl Version: 0.01
+dnl
+dnl####DESCRIPTIONEND####
+dnl ====================================================================
+
+dnl Access shared macros.
+dnl AM_CONDITIONAL needs to be mentioned here or else aclocal does not
+dnl incorporate the macro into aclocal.m4
+sinclude(../../../../../../acsupport/acinclude.m4)
+
+# Define a conditional.
+
+AC_DEFUN([AM_CONDITIONAL],
+[AC_SUBST($1_TRUE)
+AC_SUBST($1_FALSE)
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi])
+
+# Do all the work for Automake. This macro actually does too much --
+# some checks are only needed if your package does certain things.
+# But this isn't really a big deal.
+
+# serial 1
+
+dnl Usage:
+dnl AM_INIT_AUTOMAKE(package,version, [no-define])
+
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_REQUIRE([AC_PROG_INSTALL])
+PACKAGE=[$1]
+AC_SUBST(PACKAGE)
+VERSION=[$2]
+AC_SUBST(VERSION)
+dnl test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+fi
+ifelse([$3],,
+AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package]))
+AC_REQUIRE([AM_SANITY_CHECK])
+AC_REQUIRE([AC_ARG_PROGRAM])
+dnl FIXME This is truly gross.
+missing_dir=`cd $ac_aux_dir && pwd`
+AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
+AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
+AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
+AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
+AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
+AC_REQUIRE([AC_PROG_MAKE_SET])])
+
+#
+# Check to make sure that the build environment is sane.
+#
+
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftestfile
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
+ if test "[$]*" = "X"; then
+ # -L didn't work.
+ set X `ls -t $srcdir/configure conftestfile`
+ fi
+ if test "[$]*" != "X $srcdir/configure conftestfile" \
+ && test "[$]*" != "X conftestfile $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "[$]2" = conftestfile
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+rm -f conftest*
+AC_MSG_RESULT(yes)])
+
+dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
+dnl The program must properly implement --version.
+AC_DEFUN([AM_MISSING_PROG],
+[AC_MSG_CHECKING(for working $2)
+# Run test in a subshell; some versions of sh will print an error if
+# an executable is not found, even if stderr is redirected.
+# Redirect stdin to placate older versions of autoconf. Sigh.
+if ($2 --version) < /dev/null > /dev/null 2>&1; then
+ $1=$2
+ AC_MSG_RESULT(found)
+else
+ $1="$3/missing $2"
+ AC_MSG_RESULT(missing)
+fi
+AC_SUBST($1)])
+
+# Add --enable-maintainer-mode option to configure.
+# From Jim Meyering
+
+# serial 1
+
+AC_DEFUN([AM_MAINTAINER_MODE],
+[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+ dnl maintainer-mode is disabled by default
+ AC_ARG_ENABLE(maintainer-mode,
+[ --enable-maintainer-mode enable make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer],
+ USE_MAINTAINER_MODE=$enableval,
+ USE_MAINTAINER_MODE=no)
+ AC_MSG_RESULT($USE_MAINTAINER_MODE)
+ AM_CONDITIONAL(MAINTAINER_MODE, test $USE_MAINTAINER_MODE = yes)
+ MAINT=$MAINTAINER_MODE_TRUE
+ AC_SUBST(MAINT)dnl
+]
+)
+
Index: host/asleep.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: host/asleep.gif
===================================================================
--- host/asleep.gif (nonexistent)
+++ host/asleep.gif (revision 174)
host/asleep.gif
Property changes :
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: host/sound2.au
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: host/sound2.au
===================================================================
--- host/sound2.au (nonexistent)
+++ host/sound2.au (revision 174)
host/sound2.au
Property changes :
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property