
The _launcherr.ss_ library in the "launcher" collection imports
mzlib:file^, dynext:compile^, and dynext:link^, and exports the
following procedures for creating MzScheme and MrEd launcher
executables:

> (make-mred-launcher args dest) - Creates the launcher `dest'. The
   `dest' executeable (for the current OS platform) will start MrEd
   with the command-line arguments specified as strings in the list
   `args'. Extra arguments passed to the launcher at run-time will be
   appended (modulo special X flag handling, as described below) to
   this list and passed on to MrEd.

   `make-mred-launcher' transforms `args' as necessary to avoid
   mutations caused by passing the strings through the
   platform-specific launching mechanism (e.g, as sh arguments), so
   the strings in `flags' arrive to MrEd intact.

   For X Windows, the script created by `make-mred-launcher' detects
   and handles X Windows flags specially when they appear as the
   initial arguments to the script. Instead of appending these
   arguments to the end of `args', they are spliced in after any X
   Windows flags already listed listed in `args'. The remaining
   arguments (i.e., all script flags and arguments after the last X
   Windows flag or argument) are then appended after the spliced
   `args'.

   For the Macintosh, the creation of launchers requires the (one-time)
   use of an extension, starter-setup.so.  This extension is distributed
   with DrScheme bundles, and can also be built automatically from the 
   source if necessary (and if the user has a copy of Codewarrior 5).
   
   Note that MzScheme is not able to run 68k libraries.  For this 
   reason, the creation of launchers on 68k platforms is significantly
   more fragile than on PPC platforms.  In particular, any launcher
   created on a 68k platform (or using a 68k binary) must be invoked
   at least once while that launcher is in the same folder as the
   MrEd copy it is to be linked to.
      
   Note also that once created, these launchers are bound in a truly
   tenacious way to MrEd; short of deleting MrEd entirely, it's nearly 
   impossible to disconnect them.
   
> (make-mzscheme-launcher args dest) - Same as `make-mred-launcher', but
   for starting MzScheme. (No special X windows handling.)


> (make-mred-program-launcher file collection dest) - Calls
   `make-mred-launcher' with arguments that start the MrEd program
   implemented by `collection': (list "-mvL-" file collection)

> (make-mzscheme-program-launcher file collection dest) - Calls
   `make-mzscheme-launcher' with arguments that start the MzScheme
   program implemented by `file' in `collection': (list "-mvL-" file
   collection)


> (mred-program-launcher-path name) returns a pathname for an executable
   in the current PLT home directory called `name'.  For Windows, the
   ".exe" suffix is automatically appended to `name'. For Unix and
   BeOS, `name' is changed to lowercase, whitespace is changed to `-',
   and the path includes the bin subdirectory of the PLT home
   directory.

> (mzscheme-program-launcher-path name) returns the same pathname as
   (mred-program-launcher-path name).


> (install-mred-program-launcher file collection name) - Calls
   `make-mred-launcher' with the destintation returned by
   (mred-program-launcher-path name); the `file' and `collection'
   arguments are passed on to `make-mred-launcher'.

> (install-mzscheme-program-launcher file collection name) - Calls
   `make-mzscheme-launcher' with the destintation returned by
   (mzscheme-program-launcher-path name); the `file' and `collection'
   arguments are passed on to `make-mzscheme-launcher'.
