			    Platform Notes
			    --------------

This file describes platform specific notes for Monit. 

Platforms overview in alphabetical order:

 o AIX
 o Darwin (Mac OS X)
 o FreeBSD
 o Linux
 o NetBSD
 o OpenBSD
 o Solaris

Following platforms are not actively maintained because of lack of testing
machine for these OS's. They may work - its support was added and confirmed
in particular Monit releases by contributors. Possible status reports, bug
reports, patch contributions or access to such platforms for development is
welcomed:

 o HPUX


Platform specific notes:
========================


GNU/Linux
=========

Monit compiles out of the box on Linux.  Some Linux Distributions
might have Monit as a precompiled package (see PACKAGES).

In order to be able to use resource support you have to have PROCFS
support enabled in your kernel.  In case your kernel has fortified
your proc filesystem, e.g. using the openwall patchset, you might need
to start Monit as the root user. 

In case a glibc replacement is used one of the following parts may
apply.

dietlibc
--------

Since version 4.0 the use of dietlibc is supported by Monit.  For SSL
support you need to compile the ssl libraries with dietlibc; use the
"--with-ssl-lib-dir=<path>" option to configure Monit.

A configure for dietlibc might look like this:

  env CC="diet gcc" CFLAGS="-Os" \
      ./configure --with-ssl-lib-dir=/usr/lib/diet/lib-i386/


uClibc
------

The support for uClibc has been integrated in version 4.0.  Like
dietlibc you need to compile openssl with uClibc for SSL support.  You
also need to have the openssl include files outside of your "standard"
include files (e.g. use an "openssl" link in you <uClibc>/include
tree).  Otherwise your uClibc include files are mixed up with the
glibc includes. Finally, specify your <uClibc>/ tree in your configure
run with "--with-ssl-dir=<path>".

A configure for uClibc might look like this:

  env CC="i386-uclibc-gcc" CFLAGS="-Os" \
      ./configure --with-ssl-dir=/usr/i386-linux-uclibc


Solaris
=======

64-bit Monit is required for Solaris support.

You can use either gcc or Sun Studio for compilation.  

Package prerequisites

  SUNWbash
  SUNWgmake
  SUNWgcc
  SUNWopenssl-include
  SUNWopenssl-libraries

Set path to the SFW utilities and libraries, for example:

  PATH=$PATH:/usr/sfw/bin
  export PATH

  crle -64 -l /lib/64:/usr/lib/64:/usr/sfw/lib/64

Configure Monit (examples):

  gcc [sparc]:
  ./configure

  gcc [amd64]:
  ./configure

  Sun Studio 12 [sparc]:
  ./configure --with-ssl-lib-dir=/usr/sfw/lib/64 CC=/opt/solstudio12.2/bin/cc

  Sun Studio 12 [amd64]:
  ./configure --with-ssl-lib-dir=/usr/sfw/lib/64 CC=/opt/solstudio12.2/bin/cc

Compile Monit with:

  gmake


AIX
===

Configure Monit with SSL path (examples):

    ./configure \
        --with-ssl-incl-dir=/opt/freeware/include \
        --with-ssl-lib-dir=/opt/freeware/64/lib

Use GNU make to compile ('gmake')


FreeBSD + NetBSD + OpenBSD
==========================

Use GNU make to compile ('gmake')


Darwin (Mac OS X)
=================

Monit compiles out of the box on Mac OS X.

It seems that Apple is phasing out the kvm interface and that
it is disabled by default on Intel based Mac OS X 10.4.8 and later.
You can get following error in such case for Monit <= 4.9:

 --8<--
 kvm_open: : /dev/mem: No such file or directory
 system statistic error -- cannot initialize kvm interface
 system statistic error -- cannot initialize the process tree =>
 process resource monitoring disabled
 --8<--

You can reenable the kvm interface by adding the kmem to the boot-args
Open Firmware variable as root - for example:

 nvram boot-arg="kmem=1"

and reboot the machine.

Monit > 4.9 don't need this workaround.


Any other not yet mentioned but posix compatible platform
=========================================================

Monit might be able to compile using the "UNKNOWN" architecure.  In
case a wrong platform is detected you can enforce this behavior by
using the "--without-resource" flag in the configure run.  Generally,
it is advisable to stick to gcc for compiling.

