#!/bin/sh
#
# INSTALL - installation instructions and installation script.
#
# You need GNU C (version 3.4.x or later -- note however that version 4.0 will
# not work) and GNU Make (3.69 or later).  
# Make sure that they are somewhere in your PATH.  It's also helpful if you
# have GNU Readline installed in one of the standard locations (normally
# /usr/local or /usr), but this is not essential.
#
# The source distributions for GNU C, GNU Make, and GNU Readline are
# available from <ftp://ftp.gnu.org/gnu/>.  Binaries for these are
# included in almost all Linux distributions, Mac OS X and also in the Cygwin
# and MinGW distributions for Windows (see README.MS-Windows).
#
# Step 0.  Extract the files from the gzipped tar archive.
#
#      NOTE: do not extract the archive into a directory whose absolute
#      pathname contains spaces as this will cause the installation to
#      fail.
#
# Step 1.  Run `configure'.  (Just type `sh configure'.)
#
#          By default, the files will be installed in the directory
#          /usr/local/mercury-14.01.1.
#          If you want the files to be installed someplace else,
#          use the `--prefix <directory>' option to `configure'.
#          The directory name specified with the `--prefix' option
#          must not contain spaces.
#
#      NOTE: If you use the `--prefix' option to configure,
#      be aware that `mercury' is not automatically
#      appended.  That is, `--prefix=/usr/local' will put
#      files in /usr/local/bin, /usr/local/lib et cetera,
#      *not* /usr/local/mercury/bin, /usr/local/mercury/lib.
#
#          By default, the installation process will install the Mercury
#          standard library in a comprehensive set of grades, with each grade
#          supporting a given set of capabilities (debugging, profiling etc).
#          If you want to install a different set of grades, read the
#          "Finetuning" section below.
#
#          Some debugging output from running configure is automatically
#          save to the file `config.log'.
#
# Step 2.  Run `make'.
#          This step will take a long time.
#
#      NOTE: If you have problems installing a new version
#      of the compiler, you may find it helpful to either
#      completely remove any existing versions of the
#      compiler reachable on your PATH or, less drastically,
#      alter your PATH variable so that any existing version
#      of the mercury compiler is not accessible for the
#      purposes of installing the new version.
#
# Step 3.  Run `make install'.
#          This step will also take a long time.
#
#          BEWARE: if something goes wrong in this step, e.g. running
#          out of disk space, and the installation has already gotten
#          past installing the documentation, and started installing
#          the different grades of the libraries then in general it is
#          NOT sufficient to simply rerun `make install'.  Instead you
#          may need to start from scratch again.
#
# Step 4.  Check the permissions on the installed files.
#          Add /usr/local/mercury-14.01.1/bin to your PATH, and
#          add /usr/local/mercury-14.01.1/man to your MANPATH.
#          add /usr/local/mercury-14.01.1/info to your INFOPATH.
#          You can also add a WWW link to the Mercury documentation in
#          /usr/local/mercury-14.01.1/lib/mercury/html to your WWW home page,
#          and you may want to print out a hard-copy of the documentation
#          from the DVI files in /usr/local/mercury-14.01.1/lib/mercury/doc.
#
#          If step #1 enabled deep profiling, then check whether "make install"
#          was able to copy scripts/mdprof to your web server's CGI directory.
#          This directory is often writeable only by root or by the web server
#          administrator, so you may need more than your usual set of
#          privileges to do the copy (i.e. you may need to "su" to the
#          appropriate user). mdprof is also installed into the same directory
#          as other Mercury executables.
#
#          To use the emacs debugger interface ("M-x mdb"), you also need to
#          add the following lines to the `.emacs' file in your home directory:
#
#               (add-to-list 'load-path
#                 "/usr/local/mercury-14.01.1/lib/mercury/elisp")
#               (autoload 'mdb "gud" "Invoke the Mercury debugger" t)
#
# Step 5.  Run `make clean'.
#
# As a short-cut, steps 1-3 are listed below, so they can be replaced
# by just executing this file.  I suggest you run it in the background,
# and read the Mercury documentation in the `doc' directory while you are
# waiting.

sh configure &&
make &&
make install

# Fine-tuning:
# ------------
#
#          If your system has multiple CPUs and lots of RAM,
#          you can uncomment the definition of PARALLEL in the Makefile
#          to perform a parallel make.
#
#          By default the `make install' step will install a reasonable
#          set of library grades which should be appropriate for most uses.
#
#          The option --enable-libgrades=<gradelist> allows you to specify
#          precisely the list of library grades to be installed. The argument
#          of this option should be a comma-separated list of grades.
#          An empty list of grades will cause the library to be installed
#          only in the default grade.
#
#          The option --enable-minimal-install will install only the minimal
#          system that is required in order to bootstrap the Mercury compiler.
#
#          The option --disable-most-grades reduces the set of installed grades
#          to a "minimum" level for developers (just the default grade and the
#          grades corresponding to the `--debug' and `--high-level-code'
#          options).
#
#          The option --disable-nogc-grades prevents the installation
#          of grades without garbage collection.
#
#          The option --enable-agc-grades causes the installation
#          of grades that support type-accurate garbage collection.
#
#          The option --disable-prof-grades prevents the installation
#          of grades that support profiling.
#
#          The option --disable-old-prof-grades prevents the installation
#          of the old style profiling grades, i.e. all profiling grades
#          except the ones that do deep profiling.
#
#          The option --disable-trail-grades prevents the installation
#          of grades that support trailing.
#
#          The option --disable-par-grades prevents the installation
#          of thread-safe grades.
#
#          The option --enable-inefficient-grades causes the installation
#          of grades that do not exploit gcc extensions even when they are
#          available.
#
#          The option --enable-hlc-prof-grades causes the installation
#          of profiling versions of the high level code grades.
#
#          The option --enable-hlc-low-level-debug-grades causes the installation
#          of high-level code grades with C level debugging enabled. 
#
#          The option --enable-stseg-grades causes the installation of grades
#          that use stack segments.
#
#          The option --enable-dotnet-grades causes the installation
#          of the .NET grades (see README.DotNet).  This grades are only
#          installed if the .NET SDK is found.
#
#          The option --enable-java-grade causes the installation of the Java
#          grade.  This grade is only installed if the Java SDK is found.
#
#          The option --enable-erlang-grade causes the installation of the
#          Erlang grade.  This grade is only installed if the Erlang/OTP
#          distribution is found.
#
#          The option --enable-ssdebug-grades adds source-to-source debugging
#          grades hlc.gc.ssdebug and java.ssdebug, if hlc.gc or java grades
#          are also present.
#
#          The option --disable-dynamic-link prevents the installation of shared
#          libraries, even if they are supported on this system.
#
#          The option --enable-deep-profiler=/some/dir/name enables the deep
#          profiler, and specifies the directory in which to install the
#          deep profiler's CGI script. The option --disable-deep-profiler
#          causes the deep profiler not to be installed, even if the underlying
#          system would be able to support it. The default is to enable the
#          deep profiler if the system has the required features.
#
#          If you are short on RAM, you can add -DSMALL_CONFIG to the CFLAGS
#          line in the file boehm_gc/Makefile.  (This tells the garbage
#          collector to tune itself for small physical memory.)
#
#          If your system supports shared libraries, but `configure' says
#          Mercury does not support shared libraries on this system,
#          contact us and we'll see if we can add support for shared libraries
#          on that system.
#
#          Efficiency will be much improved if Mercury can use gcc global
#          register variables.  Currently these are supported for
#          mips, hppa, sparc, alpha, rs6000, i386 and x86_64 architectures
#          (see runtime/regs.h and runtime/machdeps/*).
#          If you want to use Mercury on some other CPU, contact us and
#          we'll add support for gcc global registers for that CPU.
#
# De-installation:
# ----------------
#
# You may eventually want to uninstall this version of Mercury
# (to free up disk space so you can install the next version ;-).
# If you installed in the default location, you can simply
# use `rm -rf /usr/local/mercury-14.01.1' to uninstall.
# If you installed in a location such as `/usr/local' that also
# contains other files which you do not want removed, then
# run the command `make uninstall' in this directory.
