@c -*-texinfo-*- @c This is part of the GNU MDK Reference Manual. @c Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006 @c Free Software Foundation, Inc. @c See the file mdk.texi for copying conditions. @node Installing MDK, MIX and MIXAL tutorial, Acknowledgments, Top @comment node-name, next, previous, up @chapter Installing @sc{mdk} @menu * Download:: * Requirements:: * Basic installation:: * Emacs support:: * Special configure flags:: * Supported platforms:: @end menu @node Download, Requirements, Installing MDK, Installing MDK @comment node-name, next, previous, up @section Download the source tarball GNU @sc{mdk} is distributed as a source tarball available for download in the following @acronym{URL}s: @itemize @bullet @item @url{ftp://ftp.gnu.org/pub/gnu/mdk} @item @uref{http://www.gnu.org/prep/ftp.html, GNU mirrors} @item @uref{http://sourceforge.net/project/showfiles.php?group_id=13897} @end itemize The above sites contain the latest stable releases of @sc{mdk}. The development branch is available as a @uref{http://www.gnu.org/software/gnu-arch/, GNU Arch archive} located at@footnote{See @uref{http://savannah.gnu.org/arch/?group=mdk, @sc{mdk}'s Arch page} for more information on using the unstable source tree. Note, however, that the rest of this manual is about the @emph{stable} release.} @itemize @bullet @item @uref{http://arch.sv.gnu.org/archives/mdk} @end itemize After you have downloaded the source tarball, unpack it in a directory of your choice using the command: @example tar xfvz mdk-X.Y.tar.gz @end example @noindent where @var{X.Y} stands for the downloaded version (the current stable release being version @value{VERSION}). @node Requirements, Basic installation, Download, Installing MDK @comment node-name, next, previous, up @section Requirements In order to build and install @sc{mdk}, you will need the following libraries installed in your system: @itemize @minus @item @uref{http://www.gtk.org, GLIB 2.4.0} (required) @item @uref{http://www.gnu.org/software/flex/flex.html, GNU Flex 2.5} (required) @item @uref{http://www.gtk.org, GTK 2.4.0} (optional) @item @uref{http://ftp.gnome.org/pub/GNOME/sources/libglade/2.4/, Libglade 2.4.0} (optional) @item @uref{http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html, GNU Readline} (optional) @item @uref{http://www.gnu.org/software/guile, GNU Libguile 1.6} (optional) @end itemize If present, readline and history are used to provide command completion and history management to the command line MIX virtual machine, @code{mixvm}. GTK+ and libglade are needed if you want to build the graphical interface to the MIX virtual machine, @code{gmixvm}. Finally, if libguile is found, the @sc{mdk} utilities will be compiled with Guile support and will be extensible using Scheme. @strong{Please note}: you need both the libraries @emph{and} the headers; this means both the library package and the @file{-dev} package if you do not compile your libraries yourself (ex: installing @file{libgtk2.0-0} and @file{libgtk2.0-0-dev} on Debian). @node Basic installation, Emacs support, Requirements, Installing MDK @comment node-name, next, previous, up @section Basic installation @sc{mdk} uses GNU Autoconf and Automake tools, and, therefore, should be built and installed without hassle using the following commands inside the source directory: @example ./configure make make install @end example @noindent where the last one must be run as root. The first command, @code{configure}, will setup the makefiles for your system. In particular, @code{configure} will look for GTK+ and libglade, and, if they are present, will generate the appropiate makefiles for building the @code{gmixvm} graphical user interface. Upon completion, you should see a message with the configuration results like the following: @example *** GNU MDK 1.2 has been successfully configured. *** Type 'make' to build the following utilities: - mixasm (MIX assembler) - mixvm (MIX virtual machine, with readline support, with guile support) - gmixvm (mixvm GTK+ GUI, with guile support) - mixguile (the mixvm guile shell) @end example @noindent where the last lines may be missing if you lack the above mentioned libraries. The next command, @code{make}, will actually build the @sc{mdk} programs in the following locations: @itemize @minus @item @file{mixutils/mixasm} @item @file{mixutils/mixvm} @item @file{mixgtk/gmixvm} @item @file{mixguile/mixguile} @end itemize You can run these programs from within their directories, but I recommend you to install them in proper locations using @code{make install} from a root shell. @node Emacs support, Special configure flags, Basic installation, Installing MDK @comment node-name, next, previous, up @section Emacs support @sc{mdk} includes extensive support for Emacs. Upon installation, all the elisp code is installed in @file{PREFIX/share/mdk}, where @file{PREFIX} stands for your installation root directory (e.g. @file{/usr/local}). You can copy the elisp files to a directory that is in your load-path, or you can add the above directory to it. Assuming that the installing prefix is @file{/usr/local}, you can do it by adding to your @file{.emacs} file the following line: @lisp (setq load-path (cons "/usr/local/share/mdk" load-path)) @end lisp @code{MIXAL} programs can be written using Emacs and the elisp program @file{share/mdk/mixal-mode.el}, contributed by @value{PIETER}. It provides font locking, interactive help, compiling assistance and invocation of the @code{MIX} virtual machine via a new major mode called @code{mixal-mode}. To start @code{mixal-mode} automatically whenever you edit a @code{MIXAL} source file, add the following lines to your @file{.emacs} file: @lisp (autoload 'mixal-mode "mixal-mode" t) (add-to-list 'auto-mode-alist '("\\.mixal\\'" . mixal-mode)) @end lisp In addition, @code{mixvm} can be run within an Emacs @acronym{GUD} buffer using the elisp program @file{share/mdk/mixvm.el}, contributed by @value{PHILIP}. @file{mixvm.el} provides an interface between @sc{mdk}'s @code{mixvm} and Emacs, via @acronym{GUD}. Place this file in your load-path, optionally adding the following line to your @file{.emacs} file: @lisp (autoload 'mixvm "mixvm" "mixvm/gud interaction" t) @end lisp @node Special configure flags, Supported platforms, Emacs support, Installing MDK @comment node-name, next, previous, up @section Special configure flags You can fine-tune the configuration process using the following switches with configure: @defopt @w{--enable-gui[=yes|no]} @defoptx --disable-gui Enables/disables the build of the MIX virtual machine GUI (@code{gmixvm}). If the required libraries are missing (@pxref{Requirements}) the configure script with automatically disable this feature. @end defopt @defopt @w{--with-guile[=yes|no]} @defoptx --without-guile Enables/disables the Guile support for @code{mixvm} and @code{gmixvm}, and the build of @code{mixguile}. If the required libraries are missing (@pxref{Requirements}) the configure script with automatically disable this feature. @end defopt @defopt @w{--with-readline[=yes|no]} @defoptx --without-readline Enables/disables the GNU Readline support for @code{mixvm}. If the required libraries are missing (@pxref{Requirements}) the configure script with automatically disable this feature. @end defopt For additional, boilerplate configure options, see the @file{INSTALL} file, or run @example configure --help @end example @node Supported platforms, , Special configure flags, Installing MDK @comment node-name, next, previous, up @section Supported platforms GNU MDK has been tested in the following platforms: @itemize @item Debian GNU/Linux 2.2, 2.3, 3.0, 3.1, 3.2 @item Redhat GNU/Linux 8.0 (Ronald Cole), 7.0 (Agustin Navarro), 6.2 (Roberto Ferrero) @item Mandrake 8.0 (Agustin Navarro) @item FreeBSD 4.2, 4.3, 4.4, 4.5 (Ying-Chieh Liao), 5.2 @item Solaris 2.8/gcc 2.95.3 (Stephen Ramsay) @item MS Windows 98 SE/Cygwin 1.1.8-2 (Christoph von Nathusius)@footnote{Caveats: Christoph has only tested @code{mixvm} and @code{mixasm} on this platform, using @code{gcc} 2.95.3-2, @code{GLIB} 1.2.10 and @code{GNUreadline} 4.1-2. He has reported missing history functionalities on a first try. If you find problems with history/readline functionality, please try a newer/manually installed readline version.} @item Mac OS X 10.1.2 (Johan Swanljung), Mac OS X 10.4.x (Darwin Port by Aleix Conchillo). @item AMD Athlon, GNU/Linux version 2.4.2-2smp (Red Hat 7.1 (Seawolf)) (N. H. F. Beebe) @item Apple PowerPC G3, GNU/Linux 2.2.18-4hpmac (Red Hat Linux/PPC 2000 Q4) (N. H. F. Beebe) @item DEC Alpha, GNU/Linux 2.2.19-6.2.1 (Red Hat 6.2) (N. H. F. Beebe) @item Compaq/DEC Alpha OSF/1 4.0F [ONLY after adding rsync's snprintf() implementation] (N. H. F. Beebe) @item IBM PowerPC AIX 4.2 (N. H. F. Beebe) @item Intel Pentium III, GNU/Linux 2.4.9-31smp (Red Hat 7.2 (Enigma)) (N. H. F. Beebe) @item SGI Origin 200, IRIX 6.5 (N. H. F. Beebe) @item Sun SPARC, GNU/Linux 2.2.19-6.2.1 (Red Hat 6.2) (N. H. F. Beebe) @item Sun SPARC, Solaris 2.8 (N. H. F. Beebe) @end itemize @sc{mdk} will probably work on any GNU/Linux or BSD platform. If you try it in a platform not listed above, please send a mail to @email{jao@@gnu.org, the author}.